计算向量中的前导零

时间:2021-07-14 16:34:11

标签: r

假设我们有一些包含一些数字数据的向量。 例如:

vect1<- c(0, 0, 0, 60, 40, 80, 0)
vect2<- c(100, 0, 0, 80, 40)
vect3<- c(0,0,1,2,3)

我想计算这个向量中“前导零”的数量……所以在这种情况下,我希望为 vect1 返回值 3,为 vect2 返回值 0,以及值为2 为 vect3 返回。我将如何在 R 中实现它?

提前致谢!

2 个答案:

答案 0 :(得分:3)

您可以在此处使用带有计数器的简单 for 循环。

counter <- 0 
for (i in vect){
   if (i == 0){
      counter<-counter+1
   } else {
      break()
   }
print(counter)

您可以轻松地将其包装在一个函数中以供重用,只需用 return 替换打印即可。

答案 1 :(得分:2)

有几种方法可以做到这一点。一种选择是获取向量不为 0 的累积和,然后将其转换为逻辑值并获得 sum

f1 <- function(x) sum(cumsum(x != 0) == 0)

-测试

> f1(vect1)
[1] 3
> f1(vect2)
[1] 0
> f1(vect3)
[1] 2

或者也可以使用rle

f2 <- function(x) with(rle(x == 0), lengths[1][values[1]][1])