Indexing integer vector with NA
Asked Answered
K

1

1

I have problems understanding this. I have an integer vector of length 5:

x <- 1:5

If I index it with a single NA, the result is of length 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]?
Krummhorn answered 17/8, 2016 at 8:46 Comment(4)
What do you expect as output?Gunpaper
See this similar postSelfcontent
@zx8754: So R checks whether 1 is at position NA but this is NA since there is no position NA. Now it goes to the next value 2 here is the same problem and so on?Krummhorn
Did you read help("[")?Decimalize
S
3

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.

Sochi answered 17/8, 2016 at 10:12 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.