Hi, Byron Ellis wrote: > IIRC a for loop has more per-iteration overhead that lapply, but the > real answer is "it depends on what you're doing exactly." I've seen it > be a faster, slower and equal approach.
gen.iter = function(y=NA) { function(x) { y <<- if(is.na(y)) x else x+y } } sapply + gen.iter is slithly faster on small vectors: > x <- rep(1, 5000) > system.time(tt <- sapply(x,gen.iter())) user system elapsed 0.012 0.000 0.012 > x <- rep(1, 5000) > system.time(tt <- for(i in 2:length(x)) {x[i] <- x[i-1]+x[i]}) user system elapsed 0.016 0.000 0.016 but much slower on big vectors: > x <- rep(1, 10000000) > system.time(tt <- sapply(x,gen.iter())) user system elapsed 138.589 0.964 139.633 > x <- rep(1, 10000000) > system.time(tt <- for(i in 2:length(x)) {x[i] <- x[i-1]+x[i]}) user system elapsed 29.978 0.480 30.454 Cheers, H. ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel