R子集特定值也返回NA? [英] R Subsetting Specific Value Also Returns NA?
问题描述
我刚刚开始学习 R 并且遇到了一段代码如下
I am just starting out on learning R and came across a piece of code as follows
vec_1 <- c("a","b", NA, "c","d")
# create a subet of all elements which equal "a"
vec_1[vec_1 == "a"]
结果是
## [1] "a" NA
我只是好奇,因为我将 vec_1
子集为值a",为什么 NA
也会出现在我的结果中?
Im just curious, since I am subsetting vec_1
for the value "a", why does NA
also show up in my results?
推荐答案
这是因为任何 == NA
的结果都是 NA
.甚至 NA == NA
也是 NA
.
This is because the result of anything == NA
is NA
. Even NA == NA
is NA
.
这是vec_1 == "a"
-
[1] 真假NA假假
和 NA
不是 TRUE
或 FALSE
所以当你用 NA
子集时,你得到 无
.看看这个 -
and NA
is not TRUE
or FALSE
so when you subset anything by NA
you get NA
. Check this out -
vec_1[NA]
[1] NA NA NA NA NA
在处理 NA
时,R
会尝试提供最有用的答案,即 T |NA
返回 TRUE
,因为 NA
是什么并不重要.这里还有一些例子 -
When dealing with NA
, R
tries to provide the most informative answer i.e. T | NA
returns TRUE
because it doesn't matter what NA
is. Here are some more examples -
T | NA
[1] TRUE
F | NA
[1] NA
T & NA
[1] NA
F & NA
[1] FALSE
R 无法用 NA
测试相等性.在您的情况下,您可以使用 %in%
运算符 -
R has no way to test equality with NA
. In your case you can use %in%
operator -
5 %in% NA
[1] FALSE
"a" %in% NA
[1] FALSE
vec_1[vec_1 %in% "a"]
[1] "a"
这篇关于R子集特定值也返回NA?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!