我是初学者R用户。我刚刚了解了NA功能并正在尝试它。我应用了以下代码:
x <- 1:8
x[NA]
我期待TRUE
或FALSE
答案,但我得到了8个NAs。我发现is.na提供了我正在寻找的T / F.但是,我仍然不确定为什么我制作的字符串的子集给了我NAs。任何解释?
答案 0 :(得分:4)
来自help("[")
提取时,数字,逻辑或字符NA索引选择一个未知元素,因此在逻辑,整数,数字,复数或字符结果的相应元素中返回NA,并为列表返回NULL。 (对于原始结果,它返回00。)
以下是您的代码中发生的事情:
在x[NA]
中,您基本上执行的操作与执行x[]
时完全相同(只是返回x
中所有元素的结构),除非您选择8 unknown 元素,并为每个元素返回NA
。 NA
重复用于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。