gpt4 book ai didi

arrays - 在 R 中按元素比较时如何将 NA 视为值

转载 作者:行者123 更新时间:2023-12-03 17:57:02 25 4
gpt4 key购买 nike

我想逐个比较两个向量,以检查第一个向量中某个位置的元素是否与第二个向量中相同位置的元素不同。
关键是我有NA向量内的值,当对这些值进行比较时,我得到 NA而不是 TRUEFALSE .

可重现的示例:

这是我得到的:

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 有一个可能的解决方案,但是这家伙正在创建一个函数来执行任务。我想知道是否有更优雅的方法来做到这一点。

最佳答案

利用以下事实:
T & NA = NAF & NA = F

F | NA = NAT | NA = T
以下解决方案有效,小心放置括号:

(a != b | (is.na(a) & !is.na(b)) | (is.na(b) & !is.na(a))) & !(is.na(a) & is.na(b))

你可以定义:
`%!=na%` <- function(e1, e2) (e1 != e2 | (is.na(e1) & !is.na(e2)) | (is.na(e2) & !is.na(e1))) & !(is.na(e1) & is.na(e2))

然后使用:
a %!=na% b

关于arrays - 在 R 中按元素比较时如何将 NA 视为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37610056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com