我需要从矢量中减去一个数字,使其从元素中被连续地减去。例如,考虑向量a = c(8, 4)
。如果我想从这个向量中连续减去9,我首先从第一个向量元素中减去9,即第一个元素为0,提示为1,然后从第二个元素中减去。对于第二个向量元素,留下4-1 = 3。
我可以用一堆不雅的if-else语句来做到这一点。肯定有更好的办法。显示示例会更容易:
我假设串行减法函数叫做serialSub。
a = c(8,4)
serialSub(a,4)
> [1] 4 4
serialSub(a,8)
> [1] 0 4
serialSub(a,9)
> [1] 0 3
serialSub(a,13)
> [1] 0 0
serialSub(a,0)
> [1] 8 4
答案 0 :(得分:6)
如果tosub
是要减去的总金额,那么pmin(cumsum(a), tosub)
是应从a
累积总和的每个元素中删除的总金额,因此{{1}是我们的新向量的累积和。我们需要获得给出这个累积和的向量,这可以使用cumsum(a) - pmin(cumsum(a), tosub)
:
diff