Skip to content
Prev 23723 / 63424 Next

Speed of for loops

Hi Everyone,

I have a question about for loops.  If you have something like:

f <- function(x) {
	y <- rep(NA,10);
	for( i in 1:10 ) {
		if ( i > 3 ) {
			if ( is.na(y[i-3]) == FALSE ) {
				# some calculation F which depends on one or more of the previously  
generated values in the series
				y[i] = y[i-1]+x[i];
			} else {
				y[i] <- x[i];
			}
		}
	}
	y
}

e.g.
[1] NA NA NA  4  5  6 13 21 30 40

is there a faster way to process this than with a 'for' loop?  I have  
looked at lapply as well but I have read that lapply is no faster than a  
for loop and for my particular application it is easier to use a for loop.  
Also I have seen 'rle' which I think may help me but am not sure as I have  
only just come across it, any ideas?

Many thanks

Tom