从向量元素

时间:2017-09-15 17:09:45

标签: r

我需要从矢量中减去一个数字,使其从元素中被连续地减去。例如,考虑向量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

1 个答案:

答案 0 :(得分:6)

如果tosub是要减去的总金额,那么pmin(cumsum(a), tosub)是应从a累积总和的每个元素中删除的总金额,因此{{1}是我们的新向量的累积和。我们需要获得给出这个累积和的向量,这可以使用cumsum(a) - pmin(cumsum(a), tosub)

来完成
diff