In my opinion the main issue between using 'for' and an apply function is the simplicity of the code. If it is simpler and more understandable to use 'lapply' than a 'for' loop in a situation, then use 'lapply'. If in a different situation it is the 'for' loop that is simpler, then use the 'for' loop.
In modern day R whatever timing differences there may be are likely to be slight, and virtually certain not to be critical. Where the confusion comes in is because in the olden days of S-PLUS, the timing differences could be quite substantial in some cases. The hangover from that is that apply functions are too often recommended in R. Patrick Burns [EMAIL PROTECTED] +44 (0)20 8525 0696 http://www.burns-stat.com (home of S Poetry and "A Guide for the Unwilling S User") Gregor Gorjanc wrote: >>From: Thomas Lumley >> >> >>>On Tue, 14 Mar 2006, John McHenry wrote: >>> >>> >>> >>>>Thanks, Gabor & Thomas. >>>> >>>>Apologies, but I used an example that obfuscated the question that I >>>>wanted to ask. >>>> >>>>I really wanted to know how to have extra arguments in >>>> >>>> >>>functions that >>> >>> >>>>would allow, per the example code, for something like a >>>> >>>> >>>counter to be >>> >>> >>>>incremented. Thomas's suggestion of using mapply >>>> >>>> >>>(reproduced below with >>> >>> >>>>corrections) is probably closest. >>>> >>>> >>>It is probably worth pointing out here that the R >>>documentation does not >>>specify the order in which lapply() does the computation. >>> >>>If you could work out how to increment a counter (and you could, with >>>sufficient effort), it would not necessarily work, because the 'i'th >>>evaluation would not necessarily be of the 'i'th element. >>> >>>[lapply() does in fact start at the beginning, go on until it >>>gets to the >>>end, and then stop, but this isn't documented. Suppose R became >>>multithreaded, for example....] >>> >>> >>The corollary, it seems to me, is that sometimes it's better to leave the >>good old for loop alone. It's not always profitable to turn for loops into >>some *apply construct. The trick is learning to know when to do it and when >>not to. >> >> > >Can someone share some of this tricks with me? Up to now I have always >done things with for loop. Just recently I started to pay attention to >*apply* constructs and I already wanted to start implementing them >instead of good old for, but then a stroke of lightning came from this >thread. Based on words from Thomas, lapply should not be used for tasks >where order is critical. Did I get this clear enough. Additionally, I >have read notes (I lost link, but was posted on R-help, I think) from >Thomas on R and he mentioned that it is commonly assumed that *apply* (I >do not remember which one of *apply*) is faster than loop, but that this >is not true. Any additional pointers to literature? > > > ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html