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.