On Sep 16, 2009, at 9:04 PM, OKB (not okblacke) wrote:

David Winsemius wrote:

       No, Reduce reduces an entire vector to a single value by
  repeatedly
combining adjacent elements.  I'm looking to convert a vector to
another vector where each element is some arbitrary aggregating
function   applied to the first n elements of the vector.

Yes. You need to look again:

accumulate=FALSE by default, but is subject to change.-

Ah, sorry. Yes, you're right. However, this still doesn't satisfy
my needs, because since Reduce successively combines one element at a
time, it doesn't work for functions that don't self-compose
transitively.  For instance:

Reduce(mean, c(1,2,3,4), accumulate=T)
[1] 1 1 1 1

but I want

cumapply(mean, c(1,2,3,4))
[1] 1 1.5 2 2.5

        Is there anything this general?

 cumapply <- function (FUN, X)
 { FUN <- match.fun(FUN)
   answer <- sapply(1:length(X), function(x) { FUN(X[1:x])} )
     return(answer)}

 cumapply(mean, c(1,2,3,4))
### [1] 1.0 1.5 2.0 2.5

--

David Winsemius, MD
Heritage Laboratories
West Hartford, CT

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to