R计算后续的“真”值

R计算后续的“真”值,r,R,例如,我有一个向量 ind <- c(TRUE,FALSE,TRUE,TRUE,FALSE,FALSE,FALSE,TRUE,TRUE,TRUE,FALSE) 我想计算后续真值的数量,而如果后续真值块之间存在假值,则计数应从1开始。上面例子的结果应该是 result <- c(1,0,1,2,0,0,0,1,2,3,0) 有什么好办法吗 rle计算向量中相等值的运行的长度和值 序列为nvec的每个元素创建序列seq_lennvec[i] 逻辑值与数字相乘时自动强制为0/1 所有这

例如,我有一个向量

ind <- c(TRUE,FALSE,TRUE,TRUE,FALSE,FALSE,FALSE,TRUE,TRUE,TRUE,FALSE)
我想计算后续真值的数量,而如果后续真值块之间存在假值,则计数应从1开始。上面例子的结果应该是

result <- c(1,0,1,2,0,0,0,1,2,3,0)
有什么好办法吗

rle计算向量中相等值的运行的长度和值 序列为nvec的每个元素创建序列seq_lennvec[i] 逻辑值与数字相乘时自动强制为0/1 所有这些功能合在一起:

sequence(rle(ind)$lengths) * ind
#[1] 1 0 1 2 0 0 0 1 2 3 0
rle计算向量中相等值的运行的长度和值 序列为nvec的每个元素创建序列seq_lennvec[i] 逻辑值与数字相乘时自动强制为0/1 所有这些功能合在一起:

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

在你的问题和标题中使用“后续”一词是有误导性的。这可能是英语用法的微妙之处,但我不确定。如果您计算了当前TRUE之后有多少个TRUE,而不是在序列中有多少个TRUE(包括其本身),则将使用短语“count afternative TRUE values”。你需要一个不同的词或短语来表达你想要的。也许“连续真实值运行的累计计数”在您的问题和标题中使用“后续”一词有误导性,这可能是英语用法的微妙之处,但我不确定。如果您计算了当前TRUE之后有多少个TRUE,而不是在序列中有多少个TRUE(包括其本身),则将使用短语“count afternative TRUE values”。你需要一个不同的词或短语来表达你想要的。可能是“连续真值运行的累积计数”