在向量中逐个添加元素的最佳方法是什么,直到达到数字或者如果连续元素为负数则停止循环?从这里我需要添加一个不低于0的置换/成功率。这可能吗?
a=c(5,5,-5,-5,5,5,-5)
# Ans: 5 + 5 -5 -5 + 5 +5 -5
a=c(5,-5,-5,-5,5,5,-5)
# stopped total goes negative after 3rd element
# Ans: 5 - 5 - 5
答案 0 :(得分:1)
您可以使用cumsum
进行管理,并返回向量元素的累积总和。
(ifelse是否没有负数累计金额)
> a <- c(5,-5,-5,-5,5,5,-5)
>
> cumsum(a)
[1] 5 0 -5 -10 -5 0 -5
>
> a[1:ifelse(any(cumsum(a) < 0), which(cumsum(a) < 0)[1], length(a))]
[1] 5 -5 -5