在R中的零之间的向量的和元素

Gab*_*gro 1 r sum vector

我有一个带零和正数的向量.我只想总结零之间的数字.

一个简单的例子:

x <- c(0,0,0,0,0,1,23,24,54,12,1,23,0,0,0,0,1,23,56,76,0,1,13)
Run Code Online (Sandbox Code Playgroud)

也就是说,我要总结的元素1,23,24,54,12,1,23,1,23,56,761,13.

因此138,我想要的输出是: 15614.

我发现这个问题非常相似,但它是在Python上: Python中零之间的列表元素

谢谢.

Ron*_*hah 6

我们可以使用tapply,创建每个组的组cumsum和使用sum.

new_x <- tapply(x, cumsum(x == 0), sum)
new_x

#  1   2   3   4   5   6   7   8   9  10 
#  0   0   0   0 138   0   0   0 156  14 
Run Code Online (Sandbox Code Playgroud)

由于所有数字都是正数,我们可以忽略0的数字并过滤值大于0的数字.

new_x[new_x > 0]
#  5   9  10 
#138 156  14 
Run Code Online (Sandbox Code Playgroud)

我们也可以用sapply和遵循相同的逻辑split

sapply(split(x, cumsum(x==0)), sum)
Run Code Online (Sandbox Code Playgroud)