Allocation d'une list en R
Bonjour,
Etant debutant en R j'ai plein de questions que j'espere vous pourfendrez
1.j'aimerais savoir comment preallouer une liste que je vais remplir dans une boucle ?
2. pour un vecteur je fais rep(NA,10) par exemple, y'a t'il mieux ?
3.lorsqu'on veut ajouer en fin d'une liste qqchose, y'a t'il une bonne facon de proceder ?
Merci beaucoup
statquant
Vitesse d'execution : éviter les boucles !
Une règle d'or en R qui n'est pas évidente quand on vient d'un autre langage :
Pour avoir un code efficace en terme d'éxécution en R : il faut absolument éviter les boucles.
Remplacer par les fonctions : apply, lapply, tapply, sapply...
Un petit code pour tester : on génère une matrice 10000x1000, et on compare le temps de calcul des moyennes par ligne à l'aide d'une boucle, ou à l'aide de la fonction apply :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
> n=10000
> x=matrix(runif(n*1000),nrow=n)
> moy=rep(NA,n)
> system.time(for (i in 1:n) {moy[i]=mean(x[i,])})
user system elapsed
2.13 0.03 2.16
> system.time(apply(x,1,mean))
user system elapsed
1.64 0.07 1.82 |