首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中NA == NA吗?

在R中NA == NA吗?
EN

Stack Overflow用户
提问于 2018-11-19 17:05:30
回答 1查看 4.4K关注 0票数 1

identical(NA, NA)返回TRUE,但是下面的代码将NA从日期框架中筛选出来:

代码语言:javascript
复制
library(tidyverse)
filter(starwars, birth_year == birth_year)

如果NA确实等于NA,那么上面的星战过滤数据框架应该包括NA的出生年数。为什么不呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-19 17:16:54

NA是NA的identical,但不等于NA。如果运行NA==NA,响应将是NA,因为相等的运算符不适用于NAs。来自identical文档:

在if语句和while语句中,以及在使用&& or 的逻辑表达式中,调用相同的调用是测试完全相等的方法。在所有这些应用程序中,需要确保获得一个单一的逻辑值。 在这些情况下,用户通常使用比较运算符,如==或!=。这看起来很自然,但这不是这些操作符在R中设计的,它们返回一个像参数一样的对象。如果你期望x和y的长度是1,但碰巧其中一个不是,你就不会得到一个假的。同样,如果其中一个参数是NA,则结果也是NA。在任何一种情况下,if(x == y)表达式.不会像预期的那样起作用。

以及==的文档

缺失值( NA )和NaN值被认为是不可比较的,因此涉及它们的比较总是会导致NA。在比较字符串时,如果字符串在当前排序规则区域设置中无效,也会导致缺少值。

其基本原理是,在概念层面上,缺失的值并不是相同的。它们可能代表非常不同的值,但我们只是不知道这些值是什么。

在这种情况下,另一种选择是添加| is.na(birth_year)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53379501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档