嗨,这是问题的延伸: 条件累积和
假设我有以下向量.我想计算零中运行的块总数.
d <- c(0,0,0,1,3,4,5,-1,2,3,-5,8,0,0,-2,-3,3,5,0,0,0,-1,-1,-1,-1);
Ans d <- c(0,0,0,1,4,8,13,12,14,17,12,20,0,0,-2,-5,-2,3,0,0,0,-1,-2,-3,-4).
Run Code Online (Sandbox Code Playgroud)
我想以矢量化方式进行,因为我的矢量相当大.到目前为止,我一直在努力使用rle来实现这一目标而没有太大的成功.
非常感谢.
这将有效:
aux <- split(d, cumsum(d == 0))
v <- unlist(sapply(aux, cumsum))
1 2 31 32 33 34 35 36 37 38 39 310 4 51 52 53 54 55 6 7 81 82 83 84 85
0 0 0 1 4 8 13 12 14 17 12 20 0 0 -2 -5 -2 3 0 0 0 -1 -2 -3 -4
as.vector(v)
[1] 0 0 0 1 4 8 13 12 14 17 12 20 0 0 -2 -5 -2 3 0 0 0 -1 -2 -3 -4
Run Code Online (Sandbox Code Playgroud)
这里as.vector()只隐藏了元素的数量.