【问题标题】:R - Grabbing the index of the first occurrence of a value after a refresh point?R - 在刷新点后获取第一次出现的值的索引?
【发布时间】:2020-07-30 01:38:03
【问题描述】:

假设我有一个向量:

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 中做到这一点?

【问题讨论】:

    标签: r vector sequence


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我们也可以使用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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-15
        • 1970-01-01
        • 1970-01-01
        • 2016-01-20
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        相关资源
        最近更新 更多