I have a vector of values -1, 0, 1, say

 

a <- c(0, 1, 0, 1, 1, -1, -1, -1, 0, -1, -1)

 

I want to create a vector of the cumulative sum of this, but I need to set a
maximum and minimum value for the cumsum, for example:

 

max_value <- 2

min_value <- -2

 

the expected result would be (0, 1, 1, 2, 2, 1, 0, -1, -1, -2, -2)

 

The only way I managed to do It, was

 

res <- vector(length=length(a))

res[1] <- a[1]

for ( i in 2:length(a)) res[i] <- res[i-1] + a[i] * (( res[i-1] < max_value
& a[i] > 0 ) | ( res[i-1] > min_value & a[i] < 0 ))

 

 

This is certainly not the best way to do it, so any suggestions?

 

 

Henrique


        [[alternative HTML version deleted]]

______________________________________________
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