【问题标题】:R - Count Number of Occurrence Before ValueR - 计数值之前的出现次数
【发布时间】:2015-03-04 08:31:42
【问题描述】:

我有一个布尔变量向量(假设下面是一个叫做vectorA的向量):

TRUE
FALSE
FALSE
TRUE
FALSE

我想在每个 false 之前计算 false 的出现次数并返回一个向量。对于上面的列表,向量看起来像:

0
1
2
2
3

如果我们将 TRUE/FALSE 转换为 0/1,这将与对先前值求和相同。表

0
1
1
0
1

将返回相同的向量:

0
1
2
2
3

我知道我可以使用 for 循环;像

for (i in 1:length(vectorA))
    {if (i == 1)
        {0}
     elseif (vectorA[i])
        {vectorA[i-1]}
     else
        {vectorA[i-1] + 1}
     }

有什么方法可以在没有 for 循环的情况下做到这一点?谢谢

【问题讨论】:

    标签: r performance for-loop vector


    【解决方案1】:

    这个怎么样:

    set.seed(124)
    x <- sample(c(TRUE,FALSE),12,replace=TRUE)
    ##
    R> x
     [1]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE
    ##
    R> cumsum(!x)
     [1] 0 0 1 1 1 1 2 2 3 3 4 5
    

    使用您的示例向量,

    R> y <- c(TRUE,FALSE,FALSE,TRUE,FALSE)
    R> cumsum(!y)
    [1] 0 1 2 2 3
    

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      • 2013-12-05
      • 2013-06-12
      • 1970-01-01
      • 2021-12-10
      • 2012-10-20
      相关资源
      最近更新 更多