Count the max number of ones in a vector

Solution for Count the max number of ones in a vector
is Given Below:

I am doing the next task.

Suppose that I have the next vector.

(1,1,0,0,0,1,1,1,1,0,0,1,1,1,0)

I need to extract the next info.

  1. the maximum number of sets of consecutive zeros
  2. the mean number of consecutive zeros.

FOr instance in the previous vector
the maximum is: 3, because I have 000 00 0

Then the mean number of zeros is 2.

I am thinking in this idea because I need to do the same but with several observations. I think to implement this inside an apply function.

We could use rle for this. As there are only binary values, we could just apply the rle on the entire vector, then extract the lengths that correspond to 0 (!values – returns TRUE for 0 and FALSE others)

out <-  with(rle(v1), lengths[!values])

And get the length and the mean from the output

> length(out)
[1] 3
> mean(out)
[1] 2

data

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

You can try another option using regmatches

> v <- c(1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0)

> s <- paste0(v, collapse = "")

> zeros <- unlist(regmatches(s, gregexpr("0+", s)))

> length(zeros)
[1] 3

> mean(nchar(zeros))
[1] 2