Passage de variables dans une fonction

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Alain Reymond
Messages : 9
Enregistré le : 10 Juin 2007, 15:43

Passage de variables dans une fonction

Messagepar Alain Reymond » 27 Mar 2009, 17:14

Bonjour à tous.
J'ai un petit problème technique probablement pas très difficile mais sur lequel je butte.
J'ai un dataset avec (p1,p2,p3,...p50, sexe)

Je dois effectuer quelques calculs :

Code : Tout sélectionner

  for (i in 2:90) {
     dataset2<-subset(dataset,dataset$p1<=1500 & dataset$sexe==1 & dataset$annivers>=i-2 & dataset$annivers<=i+2)
     nb<-length(dataset2$p1)
     moy<-mean(dataset2$p1)
     dev<-sd(dataset2$p1)
  }


Comme je dois le faire pour p1, p2, etc... et qu'il y en a beaucoup, je souhaite écrire une petite fonction :

Code : Tout sélectionner

mafonction <- function(parametre, sex)


mais quelle est la syntaxe pour dire que je veux telle ou telle variable du dataset ?

Code : Tout sélectionner

mafonction <- function(parametre, sex)
{
   for (i in 2:90) {
     dataset2<-subset(dataset,dataset$???<=1500 & dataset$sexe==sex & dataset$annivers>=i-2 & dataset$annivers<=i+2)
     nb<-length(dataset2$???)
     moy<-mean(dataset2$???)
     dev<-sd(dataset2$???)
  }
}


Merci d'avance pour votre aide et mes excuses pour si peu mais je piétine...

jean lobry
Messages : 733
Enregistré le : 17 Jan 2008, 20:00
Contact :

Messagepar jean lobry » 27 Mar 2009, 18:01

Bonjour,

sans doute sous-optimal dans ton cas, mais tu peux utiliser cette syntaxe :

Code : Tout sélectionner

dataset[ , parameter]

pour faire référence à la colonne dont le nom est passé comme argument en tant que chaîne de caractère à ta fonction, il faudra l'invoquer via :

Code : Tout sélectionner

mafonction("p1")


Amicalement,

Jean

Alain Reymond
Messages : 9
Enregistré le : 10 Juin 2007, 15:43

Messagepar Alain Reymond » 28 Mar 2009, 08:06

Merci mille fois. C'est cela.
Bon, j'aurais dû y songer. Quand on le voit, c'est logique!

Bien à vous.

AR


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité