1

我有一个简单的二进制向量a,我尝试b使用 R 函数将其转换为向量cumsum。但是,cumsum并不完全返回 vector b

这是一个例子:

a <- c(1,0,0,0,1,1,1,1,0,0,1,0,0,0,1,1)

b <- c(1,2,2,2,3,4,5,6,7,7,8,9,9,9,10,11)

> cumsum(a)
[1] 1 1 1 1 2 3 4 5 5 5 6 6 6 6 7 8

问题是,每当向量中出现 0 时a,前一个数字就应该增加 1,但仅限于第一个 0。其余的被赋予相同的值。

任何建议都会很棒!:-)

4

1 回答 1

4

诀窍是用来diff标记转换:

cumsum(as.logical(a+c(0,abs(diff(a)))))
 [1]  1  2  2  2  3  4  5  6  7  7  8  9  9  9 10 11
于 2012-07-18T08:36:34.153 回答