# [R] How to detect a sequence of NA values?

arun smartpink111 at yahoo.com
Thu Jan 9 02:51:22 CET 2014

```Hi Richard,

I would slightly modify the code for cases like:
a3 <- c(NA,1,3,NA,NA)

fun1 <- function(x) max(diff(which(!is.na(c(0,x,length(x)))))-1)
fun2 <- function(x) {rl <- rle(is.na(x)); max(with(rl,lengths[values]))}

all.equal(fun1(a3),fun2(a3))
# TRUE

A.K.

On Wednesday, January 8, 2014 3:02 PM, Richard Kwock <richardkwock at gmail.com> wrote:
Hey Arun,

That's a good point. You'd first need a non-NA element in the first
element (such as a 0) in order for that to work, which you can get
around by adding a 0 to the first element of the vector.

a1 <- c(NA,NA,NA,NA,1,NA,NA,2)
a2 <- c(1,NA,NA,NA,NA,1,NA,NA,2)

diff(which(!is.na(c(0,a1))))-1
#  4 2

diff(which(!is.na(c(0,a2))))-1
#  0 4 2

Richard

On Wed, Jan 8, 2014 at 11:43 AM, arun <smartpink111 at yahoo.com> wrote:
> Hi,
> If missing values are in the beginning
>
> a <- c(NA,NA,NA,NA,1,NA,NA,2)
> diff(which(!is.na(a)))-1
> # 2
>
>
>
>  rl <- rle(is.na(a))
>  max(rl\$lengths[rl\$values])
> # 4
>
> A.K.
>
>
>
>
> On Wednesday, January 8, 2014 12:56 PM, Richard Kwock <richardkwock at gmail.com> wrote:
> Another way:
>
> a = c(1,NA,NA,4,3,NA,NA,NA,NA,5)
>
> # find position of the non-NAs in the vector
> pos = which(!is.na(a))
>
> # this calculates the length by taking the differences between the
> non-NA positions.
> diff(pos)-1
>
> #get the max
> max(diff(pos)-1)
>
> Richard
>
>
> On Tue, Jan 7, 2014 at 7:36 PM, arun <smartpink111 at yahoo.com> wrote:
>> Hi,
>> Try:
>> rl <- rle(is.na(a))
>>  max(rl\$lengths[rl\$values])
>> # 3
>>
>>
>> A.K.
>>
>>
>> Hi,
>>
>> I'd like to detect whether a vector contains a sequence of NA values of a certain length. So, for example, if I have a vector a =
>> c(1,NA,NA,4,NA,NA,NA,5); how can I find what the longest sequence of NAs is (in this case 3)?
>>
>> Note that this is different from simply summing the number of NA values in the vector (which would be 5 in this case)...
>>
>> Thanks for your help !
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help