有人可以用外行语言回答如何使用NA
进行索引(子集化)。即使谷歌有一些答案,我想用简单的术语来理解它。
使用单个NA
索引矢量(长度> 1)时,为什么它会产生五个缺失值?
> x <- 1:5
> x[NA]
[1] NA NA NA NA NA
来自help("[")
:
提取时,数字,逻辑或字符NA索引选择未知元素,因此在逻辑,整数,数字,复数或字符结果的相应元素中返回NA,并为列表返回NULL。
“对应元素”是什么意思?如果您了解向量元素的回收,可以理解这一点。 x[NA]
(这是默认的逻辑NA
)在你的例子中实际上被“解释”为x[c(NA, NA, NA, NA, NA)]
,因为逻辑索引被回收。因此,x
的每个元素在子集化期间都有相应的NA
,因此(根据上面的引用)NA
为x
的每个元素返回。外行人的语言:对于x
的每个元素,我们不知道我们是否想要它。因此,为每个元素返回未知值。
正如@ r2evans所指出的那样:x[NA_integer_]
只返回一个NA
,因为整数指数不会被回收。外行人的语言:我们想要一个值,但不知道哪一个。因此,返回一个未知值。