如果原子向量上次运行为零,我只想计算上次运行中连续零的数量。
例如:
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/