I need a vector with sums of vectors up to each position in the  
original.  The imperative version is simple:

# running sum: the traditional imperative way
sumr.1 <- function(x) {
   s <- c()
   ss <- 0
   for (i in 1:length(x)) {
      ss <- ss + x[i]
      s[i] <- ss
   }
   s
}

Yet I want a functional way, which is shorter:

# running sum: functional way, but inefficient one!
sumr.2 <- function(x) {
        sapply(1:length(x), function(i) sum(x[1:i]))
}

-- the problem with the latter is, we need to create indices to run  
over them, and the sum is recomputed anew for each position, while  
the imperative version iterates without recomputing.  Is there a  
better functional solution?

Cheers,
Alexy

______________________________________________
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