【发布时间】:2016-06-03 08:55:13
【问题描述】:
我想逐元素比较两个向量,以检查第一个向量中某个位置的元素是否与第二个向量中相同位置的元素不同。
关键是我在向量中有NA 值,当对这些值进行比较时,我得到NA 而不是TRUE 或FALSE。
可重现的例子:
这是我得到的:
a<-c(1, NA, 2, 2, NA)
b<-c(1, 1, 1, NA, NA)
a!=b
[1] FALSE TRUE NA NA NA
以下是我希望 != 运算符的工作方式(将 NA 值视为变量的另一个“级别”):
a!=b
[1] FALSE TRUE TRUE TRUE FALSE
this link 有一个可能的解决方案,但这个人正在创建一个函数来执行任务。我想知道是否有更优雅的方式来做到这一点。
【问题讨论】:
-
如何获得第二种情况的 TRUE 值。它应该是 FALSE,因为我们正在将 NA 与 1 进行比较
-
你能用一个虚拟值代替NA吗?例如
a[is.na(a)] <- 999. -
@akrun 我得到
TRUE因为NA与1 不同(不等于)。@Bazz 是的,我想到了那个解决方案,它也有效,但我想要更多优雅的解决方案,而不必进行估算,因为我应该在比较之后重新转换 NA 的值(我有一个非常大的数据集,所以它不是很实用) -
您是否正在寻找新的示例来更新帖子?
-
你能更新你的输出/更清楚地解释你试图实现的目标吗?