Re: [R] efficient code. how to reduce running time?

From: Charilaos Skiadas <skiadas_at_hanover.edu>
Date: Mon 22 Jan 2007 - 14:59:33 GMT

On Jan 21, 2007, at 8:11 PM, John Fox wrote:

> Dear Haris,
>
> Using lapply() et al. may produce cleaner code, but it won't
> necessarily
> speed up a computation. For example:
>
>> X <- data.frame(matrix(rnorm(1000*1000), 1000, 1000))
>> y <- rnorm(1000)
>>
>> mods <- as.list(1:1000)
>> system.time(for (i in 1:1000) mods[[i]] <- lm(y ~ X[,i]))
> [1] 40.53 0.05 40.61 NA NA
>>
>> system.time(mods <- lapply(as.list(X), function(x) lm(y ~ x)))
> [1] 53.29 0.37 53.94 NA NA
>
Interesting, in my system the results are quite different:

 > system.time(for (i in 1:1000) mods[[i]] <- lm(y ~ X[,i])) [1] 192.035 12.601 797.094 0.000 0.000  > system.time(mods <- lapply(as.list(X), function(x) lm(y ~ x))) [1] 59.913 9.918 289.030 0.000 0.000

Regular MacOSX install with ~760MB memory.

> In cases such as this, I don't even find the code using *apply()
> easier to
> read.
>
> Regards,
> John

Haris



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 and provide commented, minimal, self-contained, reproducible code. Received on Tue Jan 23 02:05:02 2007

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Mon 22 Jan 2007 - 16:30:32 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.