[R] Generalized cumsum?

David Winsemius dwinsemius at comcast.net
Wed Sep 16 23:10:29 CEST 2009


On Sep 16, 2009, at 5:00 PM, OKB (not okblacke) wrote:

>    	Is there anything like cumsum and cumprod but which allows you to
> apply an arbitrary function instead of sum and product?  In other  
> words,
> I want a function cumfunc(x, f) that returns a vector, so that for  
> all n
> up to the length of x
>
> cumapply(x,f)[n] = f(x[1:n])

?Reduce

Slightly modified from the help page:

 > add <- function(x) Reduce("+", x, accumulate=TRUE)
 > add(list(1, 2, 3))
[1] 1 3 6

 > cummult <- function(x) Reduce("*", x, accumulate=TRUE)
 > cummult(list(1, 2, 3))
[1] 1 2 6

>
> This would give cumsum and cumprod as special cases when f=sum or
> f=prod.
>
>    	I could write such a function, but I can't see a way to do it
> without a loop, so I'm wondering if such a function exists that may be
> speedier.
-- 
David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list