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.

Reply via email to