R计数后续" TRUE"值

时间:2014-03-11 16:04:56

标签: r

我有一个矢量,例如

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)

任何想法如何做得很好?

1 个答案:

答案 0 :(得分:3)

  • rle计算“向量中相等值运行的长度和值”
  • sequence为“nvec的每个元素创建序列seq_len(nvec [i])”
  • 当与数字相乘时,逻辑值会自动强制转换为0/1

所有这些功能在一起:

sequence(rle(ind)$lengths) * ind
#[1] 1 0 1 2 0 0 0 1 2 3 0