r - 如何计算上次运行中的连续零?

标签 r count atomic

如果原子向量上次运行为零,我只想计算上次运行中连续零的数量。

例如:

a <- c(1, 0, 0, 0)

所以,最后一次运行中连续零的数量是3。

如果上次运行不为零,则答案必须为零。例如

a <- c(0, 1, 1, 0, 0, 1)

所以,答案是零,因为在最后一次运行中有一个,而不是零。

我不想使用任何外部包。我设法编写一个使用循环的函数。但我认为必须存在更有效的方法。

    czero <- function(a) {
      k = 0
      for(i in 1:length(a)){
        if(a[i] == 0) {
          k = k + 1 
        } else k = 0
      }
      return(k)
    }

最佳答案

反转a,然后计算其累积和。前导 0 将是仅剩的 0,并且 !其中每个元素为 TRUE,其他元素为 FALSE。其总和就是所需的数字。

sum(!cumsum(rev(a)))

关于r - 如何计算上次运行中的连续零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57980708/

相关文章:

count - Qlik 从多个字段中获取不同的计数

multithreading - 我需要在 Redis 脚本中使用 MULTI/EXEC

c - 为什么 GCC 填充这个位域?

r - 将knitr block 保存到R文件

r - 如何计算一组不同大小的向量的描述性统计量

php - 邀请被接受后我能知道是哪个用户发出的吗?

java - 查找保存 int 数所需的位数

c++ - store(x,std::memory_order_relaxed)与直接分配值之间的区别

r - 循环遍历向量的向量

r - 如何将 “reader-friendly” sessionInfo()写入文本文件