NA的子集如何工作?

时间:2018-08-28 14:43:56

标签: r subset na

有人可以用外行术语回答NA的索引(子集)如何工作。即使Google给出了一些答案,但我还是想简单地理解它。

使用单个NA索引一个向量(长度> 1)时,为什么会产生五个缺失值?

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

1 个答案:

答案 0 :(得分:9)

来自help("[")

  

提取时,数字,逻辑或字符NA索引选择一个   未知元素,因此在a的相应元素中返回NA   逻辑,整数,数字,复数或字符结果,而NULL为   列表。

“对应元素”是什么意思?如果您知道矢量元素的回收,则可以理解。由于逻辑索引被回收,因此示例中的x[NA](默认情况下为逻辑NA)实际上被“解释”为x[c(NA, NA, NA, NA, NA)]。因此,x的每个元素在子集期间都有一个对应的NA,因此(根据上面的引用)NAx的每个元素返回。用外行语言来说:对于x的每个元素,我们都不知道是否需要。因此,为每个元素返回一个未知值。

@ r2evans指出:x[NA_integer_]仅返回一个NA,因为整数索引没有被回收。用外行的语言来说:我们想要一个值,但不知道哪个值。因此,将返回一个未知值。