在下面的代码中:
x <- 1:8
x[NA]
Run Code Online (Sandbox Code Playgroud)
我本来期待一个TRUE或的FALSE答案,但我得到了八个NA。我发现is.na提供了我正在寻找的TRUE/ 。FALSE但是,我仍然不确定为什么NA用 中的结果对向量进行子集化NA。有什么解释吗?
来自NA 的索引部分help("["):
提取时,数字、逻辑或字符
NA索引会选择未知元素,因此返回NA逻辑、整数、数字、复数或字符结果的相应元素,对于列表则返回“NULL”。(它返回00原始结果。)
所以这是您的代码中发生的情况:
基本上,x[NA]您所做的操作与您所做的操作相同x[](只是返回在 中构造的所有元素x),只不过您选择了 8 个未知元素并NA为每个元素返回。NA中的每个元素都会重复使用x。在 R 中,这称为回收。
正如@thelatemail 在下面的评论中指出的那样,如果我们看一个示例,可以进一步说明这一点。
x[c(TRUE, NA, TRUE)]
# [1] 1 NA 3 4 NA 6 7 NA
Run Code Online (Sandbox Code Playgroud)
上面的代码是c(TRUE, NA, TRUE)对 中的所有元素进行回收x,其中的TRUE意思是“取这个值”。由于 中只有 8 个元素x,因此第三个循环在 处截止NA。
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |