La Doua Dans l'Oeil
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -20%
(Adhérents Fnac) Enceinte Bluetooth Marshall ...
Voir le deal
199.99 €

fonction "boucle" sous R

3 participants

Aller en bas

fonction "boucle" sous R Empty Re: fonction "boucle" sous R

Message  Margaux Mar 12 Mai - 11:22

Est ce que quelqu'un peut m'aider à faire une boucle simple dans R ?

Voici ce que je veux faire :
j'ai une colonne "nom" avec dedans des codes pour chaque sujet : C01, C02..., C15.
J'ai une colonne "performances" avec dedans des 0 ou des 1 selon que le test a été réussi ou non. Chaque sujet a réalisé le test 20 fois.

Je veux obtenir la moyenne des performances par individu. J'ai la formule pour un individu : mean(performances[nom=="C01"]) mais j'aimerai que ça se fasse d'un coup pour chacun des individus. Et s'il pouvait me le sortir dans un fichier txt, je ne serais pas contre.

Je sais qu'il faut utiliser la fonction "for" mais même avec l'aide du logiciel je n'y arrive pas.

Merci d'avance !
Margaux
Margaux
Squatteurs
Squatteurs

Nombre de messages : 157
Niveau et domaine de formation : Master2 neurosciences (recherche)
Etablissement : UCB Lyon1
Date d'inscription : 21/10/2007

Revenir en haut Aller en bas

fonction "boucle" sous R Empty Re: fonction "boucle" sous R

Message  Adrien Mar 12 Mai - 17:08

salut,

je maitrise mal ce type de programmation, mais je penserais à :

for(i in 1:ncol(nom))
mean(performances[nom=="C01"])


essaie et dis nous si ça fonctionne !!
Adrien
Adrien
Squatteurs
Squatteurs

Nombre de messages : 398
Age : 40
Niveau et domaine de formation : Doctorant Ecologie (LBBE)
Etablissement : UCB Lyon1
Date d'inscription : 08/10/2007

https://ladoua.exprimetoi.net

Revenir en haut Aller en bas

fonction "boucle" sous R Empty Re: fonction "boucle" sous R

Message  Margaux Mer 13 Mai - 12:28

Alors entre temps ma maitre de stage a cherché une solution et en a trouvé une qui fonctionne :


x<-list("C01","C02","C03","C04","C05","C06","C07","C08","C09","C10","C11","C12","C13","C14","C15")
for(i in 1:15)
+ print(mean(performances[nom==x[i]]))




J'ai quand même essayé la tienne Adrien mais ça ne fonctionne pas, il me répond :
Erreur dans 1:ncol(nom) : argument NA / NaN
Margaux
Margaux
Squatteurs
Squatteurs

Nombre de messages : 157
Niveau et domaine de formation : Master2 neurosciences (recherche)
Etablissement : UCB Lyon1
Date d'inscription : 21/10/2007

Revenir en haut Aller en bas

fonction "boucle" sous R Empty Re: fonction "boucle" sous R

Message  Adrien Mer 13 Mai - 12:40

cool,

j'allais te dire de créer un vecteur numérique de "nom" ce qui revient je pense a la même chose que ta "list", mais ta version est plus propre.
Félicitation a ta maitre de stage pour la progra'.
Adrien
Adrien
Squatteurs
Squatteurs

Nombre de messages : 398
Age : 40
Niveau et domaine de formation : Doctorant Ecologie (LBBE)
Etablissement : UCB Lyon1
Date d'inscription : 08/10/2007

https://ladoua.exprimetoi.net

Revenir en haut Aller en bas

fonction "boucle" sous R Empty Re: fonction "boucle" sous R

Message  nik Jeu 21 Mai - 14:34

salut,

j'arrive un peu tardivement mais d'un poitn de vue général, il faut apprendre petit à petit à se passer des boucles for autant que l'on peut car c'est très gourmand en ressource système du pc. THE méthode pour calculer n'importe quelle statistique selon les modalités d'un facteur reste la fonction tapply(). Avec tes données :

Code:
tapply(performances,nom,mean)

et pouf pouf en moins d'une demi-seconde, on a une moyenne par individu si on veut que R nous sorte l'écart type en plus on peut faire :

Code:
tapply(performances,nom,function (x) x <- c(mean(x),sd(x)) )

Ensuite on peut faire un seul tableau en faisant :

Code:
do.call("rbind",tapply(performances,nom,function (x) x <- c(mean(x),sd(x)) ))

et un petit coup de la fonction write.table() pour exporter tout ça en .txt

nik

nik
Bavard
Bavard

Nombre de messages : 57
Niveau et domaine de formation : Doctorat Ecologie
Etablissement : UCB Lyon1
Date d'inscription : 22/09/2008

Revenir en haut Aller en bas

fonction "boucle" sous R Empty Re: fonction "boucle" sous R

Message  Margaux Sam 23 Mai - 18:44

Après la tempête c'est pas grave, c'est toujours bon à savoir pour la prochaine fois.
Donc :
Première formule : ça marche impec, c'est génial ! Very Happy
Deuxième formule : parait-il qu'il y aurait un symbole inattendu au niveau du "x <- "...
Troisième formule (en remplaçant l'intérieur par la 1ère formule qui fonctionnait bien) : "le second argument doit être une liste".
Bahou. Crying or Very sad
Margaux
Margaux
Squatteurs
Squatteurs

Nombre de messages : 157
Niveau et domaine de formation : Master2 neurosciences (recherche)
Etablissement : UCB Lyon1
Date d'inscription : 21/10/2007

Revenir en haut Aller en bas

fonction "boucle" sous R Empty Re: fonction "boucle" sous R

Message  nik Dim 24 Mai - 23:57

ça marche bien chez moi...:s
Si jamais tu es passé par un copié collé à partir du forum, il est possible qu'une histoire de format soit mal digéré par R.
Pour la dernière formule, si tu ne demande qu'une seule statistique, le tapply() te retourne un vecteur donc oui le do.call est inutile, un simple cbind() devrait suffir.

nik
Bavard
Bavard

Nombre de messages : 57
Niveau et domaine de formation : Doctorat Ecologie
Etablissement : UCB Lyon1
Date d'inscription : 22/09/2008

Revenir en haut Aller en bas

fonction "boucle" sous R Empty Re: fonction "boucle" sous R

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser