使用NA作为R中的子集

时间:2015-01-19 00:12:50

标签: r na subset

我是初学者R用户。我刚刚了解了NA功能并正在尝试它。我应用了以下代码:

x <- 1:8
x[NA] 

我期待TRUEFALSE答案,但我得到了8个NAs。我发现is.na提供了我正在寻找的T / F.但是,我仍然不确定为什么我制作的字符串的子集给了我NAs。任何解释?

2 个答案:

答案 0 :(得分:4)

来自help("[")

索引中的NAs 部分
  

提取时,数字,逻辑或字符NA索引选择一个未知元素,因此在逻辑,整数,数字,复数或字符结果的相应元素中返回NA,并为列表返回NULL。 (对于原始结果,它返回00。)

以下是您的代码中发生的事情:

x[NA]中,您基本上执行的操作与执行x[]时完全相同(只是返回x中所有元素的结构),除非您选择8 unknown 元素,并为每个元素返回NANA重复用于x中的每个元素。在R中,这称为回收

正如@thelatemail在下面的评论中所指出的,如果我们看一个例子,可以进一步说明这一点。

x[c(TRUE, NA, TRUE)]
# [1]  1 NA  3  4 NA  6  7 NA

以上代码针对c(TRUE, NA, TRUE)中的所有元素回收x,其中TRUE表示&#34;取此值&#34;。由于我们在x中只有8个元素,因此第三个周期会在NA处停止。

答案 1 :(得分:0)

您在索引位置使用了NA。实际上,对于您的阵列,唯一有效的索引是1-8。 x [NA]与x [9]具有相同的值 - 它的NA。