> -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of > rex.dw...@syngenta.com > Sent: Thursday, March 10, 2011 8:47 AM > To: lig...@statistik.tu-dortmund.de; arun.kumar.s...@gmail.com > Cc: r-help@r-project.org > Subject: Re: [R] using lapply > > But no one answered Kushan's question about performance > implications of for-loop vs lapply. > With apologies to George Orwell: > "for-loops BAAAAAAD, no loops GOOOOOOD."
While using no loops is faster, lapply has a loop in it and isn't much different in speed from the equvialent for loop. The big advantage of the *apply functions is that they can make your code easier to understand. Here are some times for various ways of computing log(1:1000000). This example is probably close to a worst-case scenario for the for loop, since the time is dominated by the [<- operation. Using the various *apply functions can get you a speed-up of c. 4x, which is nice, but the vectorized log gives a speed-up of c. 15x over the fastest of the loops. I think the for-loop method is ungainly because it obscures to flow of the data, but there is no accounting for taste. > system.time({ val.for <- numeric(1e6);for(i in seq_len(1e6))val.for[i]<-log(i)}) user system elapsed 7.03 0.02 7.19 > system.time({ val.sapply <- sapply(seq_len(1e6), log) }) user system elapsed 6.59 0.03 6.80 > system.time({ val.lapply <- unlist(lapply(seq_len(1e6), log)) }) user system elapsed 2.48 0.00 2.52 > system.time({ val.vapply <- vapply(seq_len(1e6), log, FUN.VALUE=0) }) user system elapsed 1.74 0.00 1.76 > system.time({ val.log <- log(seq_len(1e6)) }) user system elapsed 0.12 0.00 0.12 > identical(val.vapply,val.sapply) && identical(val.vapply,val.for) && identical(val.vapply,val.lapply) && identical(val.vapply,val.log) [1] TRUE Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > > -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of Uwe Ligges > Sent: Thursday, March 10, 2011 4:38 AM > To: Arun Kumar Saha > Cc: r-help@r-project.org > Subject: Re: [R] using lapply > > > > On 10.03.2011 08:30, Arun Kumar Saha wrote: > > On reply to the post > > http://r.789695.n4.nabble.com/using-lapply-td3345268.html > > Hmmm, can you please reply to the original post and quote it? > You mail was not recognized to be in the same thread as the message of > the original poster (and hence I wasted time to answer it again). > > Thanks, > Uwe Ligges > > > > > > Dear Kushan, this may be a good start: > > > > ## assuming 'instr.list' is your list object and you are applying > > my.strat() function on each element of that list, you can use lapply > > function as > > lapply(instr.list, function(x) return(my.strat(x))) > > > > Here resulting element will again be another list with > length is same as the > > length of your original list 'instr.list.' > > > > Instead if the returned object for my.strat() function is a > single number > > then you might want to create a vector instead list, in > that case just use > > 'sapply' > > > > HTH > > > > Arun, > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > > > > > message may contain confidential information. If you are not > the designated recipient, please notify the sender > immediately, and delete the original and any copies. Any use > of the message by you is prohibited. > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.