用 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]
正在索引,但我不明白
- 为什么这给了我五个
NA's
- 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.
我无法理解这一点。我有一个长度为 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]
正在索引,但我不明白
- 为什么这给了我五个
NA's
- 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.