[R] avoiding loops?

Uwe Ligges ligges at statistik.uni-dortmund.de
Sun Sep 26 12:40:00 CEST 2004


Christian Schulz wrote:

> Hi,
> 
> is it possible doing this "moving average" 
> without a loop, because it is not really
> fast for dim(x) 300.000 50. 


On the other hand, building a matrix before consumes too much memory. 
The best way of doing it is using an already existing function (you 
might want to look whether, e.g., filter() helps) or porting the loops to C.

Uwe Ligges

> I make some attempts with apply and sapply,but didn't get success  until now.
> 
> many thanks , christian
> 
> 
> ma <- function(x, FUN=mean, lag=5) 
>  { 
>          FUN=match.fun(FUN)
>          n <-  ncol(x) - lag 
>          frame <-  matrix(0,nrow=nrow(x),ncol=n)
>          for(k in 1:nrow(frame)){
>          for (i in 1:ncol(frame)) { 
>          frame[k,i] <- FUN(x[k,i]:x[k,i + lag])
>          } }
>          return(as.data.frame(frame) )
>  }
> 
> ______________________________________________
> R-help at 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




More information about the R-help mailing list