用 NA 索引整数向量

Indexing integer vector with NA

我无法理解这一点。我有一个长度为 5 的整数向量:

x <- 1:5

如果我用单个 NA 索引它,结果的长度为 5:

x[NA] 
# [1] NA NA NA NA NA

我的第一个想法是 R 检查 1-5 是否 NA 但是

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

所以这不是解决方案。我的第二种方法是 x[NA] 正在索引,但我不明白

  1. 为什么这给了我五个 NA's
  2. NA 作为索引意味着什么。 x[1] 给你第一个值,但 x[NA] 的结果应该是什么?

比较你的代码:

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

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

在第一种情况下,NA 是逻辑类型(class(NA) 显示),而在第二种情况下,它是一个整数。从?"["可以看出,在i符合逻辑的情况下,循环到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.