我刚开始学习R和跨越一段代码就如下
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
也是我的结果显示?
我刚开始学习R和跨越一段代码就如下
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
也是我的结果显示?
这是因为任何事物的结果== NA
是NA
。 即使NA == NA
是NA
。
这里的输出vec_1 == "a"
-
[1] TRUE FALSE NA FALSE FALSE
而NA
是不是TRUE
或FALSE
,所以当你通过什么子集NA
你NA
。 看一下这个 -
vec_1[NA]
[1] NA NA NA NA NA
当处理NA
, R
试图提供最翔实的答案,即T | NA
T | NA
返回TRUE
,因为它什么都无所谓NA
是。 下面是更多的例子 -
T | NA
[1] TRUE
F | NA
[1] NA
T & NA
[1] NA
F & NA
[1] FALSE
R有没有办法来测试平等NA
。 你的情况,你可以使用%in%
运营商-
5 %in% NA
[1] FALSE
"a" %in% NA
[1] FALSE
vec_1[vec_1 %in% "a"]
[1] "a"