[R] Alternative to For Loop?

Duncan Murdoch murdoch at stats.uwo.ca
Tue Dec 11 12:36:25 CET 2007


tom soyer wrote:
> Hi,
>
> I am doing a calculation on a long series using a For Loop. Here is an
> example of the calculation:
>
> accumulate=function(x){
>  y=0
>  z=0
>  for(i in 1:length(x)){
>   y=y+x[i]
>   z=c(z,y)
>
>  }
>  return(z[2:length(z)])
> }
>
>   
>> x=c(1:10)
>> x
>>     
>  [1]  1  2  3  4  5  6  7  8  9 10
>   
>> accumulate(x)
>>     
>  [1]  1  3  6 10 15 21 28 36 45 55
>   
>
> Although the For Loop works, looping through an array is time consuming and
> inefficient when the series is large. Does anyone know a faster way of doing
> the same calculation? Thanks!

cumsum(x) is what you want.

Duncan Murdoch



More information about the R-help mailing list