R - 获取刷新点后第一次出现的值的索引?

R - Grabbing the index of the first occurrence of a value after a refresh point?

假设我有一个向量:

vec <- c(3,0,1,3,0,1,0,1,2,3,0,0,1,3,1,3)

我想获取每3个后第一次出现1的索引,所以,我想要的索引输出是

3,6,13,15

我如何在 R 中执行此操作?

一种方法是使用 cumsum 来跟踪 3s。

mat <- cbind(cumsum(vec==3), vec == 1)
which(!duplicated(mat) & mat[,2] & mat[,1] > 0)
[1]  3  6 13 15

我们也可以用rleid

library(data.table)
na.omit(as.vector(tapply(seq_along(vec) * (vec== 1), rleid(vec == 3), FUN = function(x)x[x  > 0][1])))
#[1]  3  6 13 15