Je suis récemment tombé sur une discussion de la mailing list de R où un des participants dénonçait la lenteur de R par rapport à d'autres langages orientés stats.
Il a reçu pour réponse ceci :
Can you give some evidence for this statement, please?
At the moment, I'd bet that you use forgot to pre-allocate a
result array in R and do something like the "notorious horrible" (:-)
1-dimensional
r <- NULL
for(i in 1:10000) {
r[i] <- verycomplicatedsimulation(i)
}
instead of the "correct"
r <- numeric(10000)
for(i in 1:10000) {
r[i] <- verycomplicatedsimulation(i)
}
If r is a matrix or even higher array, and you are using rbind()
or cbind() inside the loop to build up the result,
the problem will become even worse.
Personnellement, je pratiquais les trois méthodes (selon l'humeur) sans savoir que certaines étaient plus lentes que d'autres et "notorious horrible".
Dans le même genre, on m'a un jour conseillé d'utiliser colSums au lieu de apply avec FUN=sum.
Je me demande donc si il il existe quelque part un document synthétisant de manière claire les choses à éviter dans R, en d'autres terme un guide des bonnes pratiques de programmation en R.
J'ai bien noté les précieuses recommandations à la fin du document de Christophe Genolini : http://christophe.genolini.free.fr/webT ... /index.php
C'est juste dommage qu'on explique pas le pourquoi de certaines règles (mais bon ce n'est qu'une annexe et ce n'est donc pas le but premier du document). On a alors souvent l'impression d'appliquer stupidement certaines règles sans trop savoir pourquoi (par exemple pourquoi utiliser <- au lieu de = ou encore FALSE au lieu de F). De manière générale, çà concerne surtoût la lisibilité plus que par exemple la rapidité.
Peut-être ceci (??) :
S Poetry de P.J. Burns
http://www.burns-stat.com/pages/spoetry.html
Merci d'avance pour vos avis
Gilles