有人可以用外行术语回答NA
的索引(子集)如何工作。即使Google给出了一些答案,但我还是想简单地理解它。
使用单个NA
索引一个向量(长度> 1)时,为什么会产生五个缺失值?
> x <- 1:5
> x[NA]
[1] NA NA NA NA NA
答案 0 :(得分:9)
来自help("[")
:
提取时,数字,逻辑或字符NA索引选择一个 未知元素,因此在a的相应元素中返回NA 逻辑,整数,数字,复数或字符结果,而NULL为 列表。
“对应元素”是什么意思?如果您知道矢量元素的回收,则可以理解。由于逻辑索引被回收,因此示例中的x[NA]
(默认情况下为逻辑NA
)实际上被“解释”为x[c(NA, NA, NA, NA, NA)]
。因此,x
的每个元素在子集期间都有一个对应的NA
,因此(根据上面的引用)NA
为x
的每个元素返回。用外行语言来说:对于x
的每个元素,我们都不知道是否需要。因此,为每个元素返回一个未知值。
@ r2evans指出:x[NA_integer_]
仅返回一个NA
,因为整数索引没有被回收。用外行的语言来说:我们想要一个值,但不知道哪个值。因此,将返回一个未知值。