我有一个矢量,例如
ind <- c(TRUE,FALSE,TRUE,TRUE,FALSE,FALSE,FALSE,TRUE,TRUE,TRUE,FALSE)
我希望计算后续“TRUE”值的数量,而如果后续“TRUE”值块之间存在“FALSE”值,则计数应从1开始。上面例子的结果应该是
result <- c(1,0,1,2,0,0,0,1,2,3,0)
任何想法如何做得很好?
答案 0 :(得分:3)
rle
计算“向量中相等值运行的长度和值”sequence
为“nvec的每个元素创建序列seq_len(nvec [i])”所有这些功能在一起:
sequence(rle(ind)$lengths) * ind
#[1] 1 0 1 2 0 0 0 1 2 3 0