ruedi ruedi - 3 months ago 8
R Question

Indexing with NA

I have problems understanding this codeline

x <- 1:5; x[NA]
[1] NA NA NA NA NA


My first idea was that R checks whether 1-5 is
NA
but

x <- c(NA, 2, 4); x[NA]
NA NA NA.


So this cannot be the solution. My second approach is that
x[NA]
is indexing but then I do not understand


  1. Why this gives me five
    NA's

  2. What NA as an index means.
    x[1]
    gives you the first value but what should be the result of
    x[NA]
    ?


Answer

Compare your code:

> x <- 1:5; x[NA] 
[1] NA NA NA NA NA

with

> x <- 1:5; x[NA_integer_] 
[1] NA

In the first case, NA is of type logical (class(NA) shows), whereas in the second it's an integer. From ?"[" you can see that in the case of i being logical, it is recycled to the length of x:

For [-indexing only: i, j, ... can be logical vectors, indicating elements/slices to select. Such vectors are recycled if necessary to match the corresponding extent. i, j, ... can also be negative integers, indicating elements/slices to leave out of the selection.

Comments