在R中使用NA作为子集
我是一个初学者。我刚刚了解了NA的功能,并正在进行实验。我应用了以下代码:在R中使用NA作为子集,r,na,subset,R,Na,Subset,我是一个初学者。我刚刚了解了NA的功能,并正在进行实验。我应用了以下代码: x <- 1:8 x[NA] x您使用NA代替索引。事实上,数组中唯一有效的索引是1-8。x[NA]与x[9]具有相同的值-它是NA。来自帮助(“[”)的NAs索引部分: 提取时,数字、逻辑或字符NA索引会选择未知元素,因此在逻辑、整数、数字、复数或字符结果的对应元素中返回NA,而在列表中返回NULL。(原始结果返回00。) 下面是代码中发生的情况: 在x[NA]中,您执行的操作基本上与执行x[]时相同(它只返
x <- 1:8
x[NA]
x您使用NA代替索引。事实上,数组中唯一有效的索引是1-8。x[NA]与x[9]具有相同的值-它是NA。来自帮助(“[”
)的NAs索引部分:
提取时,数字、逻辑或字符NA索引会选择未知元素,因此在逻辑、整数、数字、复数或字符结果的对应元素中返回NA,而在列表中返回NULL。(原始结果返回00。)
下面是代码中发生的情况:
在x[NA]
中,您执行的操作基本上与执行x[]
时相同(它只返回x
中结构化的所有元素),但您正在选取8个未知元素并为每个元素返回NA
。在x
中,NA
被重复用于每个元素。在R中,这称为回收
正如@thelatemail在下面的评论中所指出的,如果我们看一个例子,可以进一步说明这一点
x[c(TRUE, NA, TRUE)]
# [1] 1 NA 3 4 NA 6 7 NA
对于
x
中的所有元素,上述代码是循环c(TRUE,NA,TRUE)
,其中TRUE
表示“取该值”。由于我们在x
中只有8个元素,第三个循环在NA
处中断。是的。NA
正在被回收,所有NA
都被返回。就像你这样做x[c(TRUE,NA)]
你会看到向量值散布在NA
s中。感谢你的快速响应!有意义。你可以通过单击最适合你的答案上的复选标记来接受任何答案