我有一个简单的二进制向量a
,我尝试使用R函数b
将其转换为向量cumsum
。但是,cumsum
并未完全返回向量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
问题在于,只要向量a
中出现0,那么前一个数字应该增加1,但只有前一个数字为0。剩下的数字给出相同的值。
任何建议都会很棒! : - )
答案 0 :(得分:3)
诀窍是使用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