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]`
?

``````> 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.

Source (Stackoverflow)