R子集特定值也返回NA? [英] R Subsetting Specific Value Also Returns NA?

查看:37
本文介绍了R子集特定值也返回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 不是 TRUEFALSE 所以当你用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆