avoiding "for()" loops: a question?
On Fri, 2 Aug 2002, Brett Magill wrote:
I have read in several places that one should attempt to avoid for loops whenever possible. In this spirit, I was playing with some code that I have written to improve its efficiency and elegance.
It's much less true in (current) R than in some other S implementations. (S-PLUS 3.0 to 3.3 in particular.)
The following iteratively drops a column from a data frame and applies a function to the reminaing columns. I replaced this for loop: for (y in 1:dim(x)[2]) my.function (x[,-y])
That doesn't actually do anything unless my.function has side effects (very undesirable).
with this: sapply(1:dim(x)[2], function(y) my.function (x[,-y] ))
That returns a result.
in an attempt to aviod "for()". However, using system.time() to compare performance of the two functions shows no difference in performance over 30 trials with each function on a 500 X 24 matrix (any edge seems in favor of the for loop). (Win 98,PIII,128M,R 1.5.1) Is the issue with the way I used sapply? Is there a better way to do this?
See `S Programming' for some real examples in different S dialects, including R from 1999.
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272860 (secr) Oxford OX1 3TG, UK Fax: +44 1865 272595 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._