或者比较两个布尔值,我想要F | NA返回F

Flo*_*ris 0 r

我有一种情况,我有两个向量,1,0和NA.我想在每个指数上取最高的非NA值.

例如.取这两个向量v1和v2:

v1 = c(1,0,1,0,0,1,NA,NA,0,1)
v2 = c(1,NA,1,0,1,NA,1,NA,0,1)
Run Code Online (Sandbox Code Playgroud)

您可以将它们转换为布尔值,v1 | v2然后会出现以下问题:

1 | 0 = T
0 | 1 = T
1 | 1 = T
0 | 0 = F
NA | NA = NA <--- Good
1 | NA = T <-- Good
0 | NA = NA <--- I want this to return F
Run Code Online (Sandbox Code Playgroud)

还有另一个使用apply和的解决方案max,但问题是max(c(NA,NA), na.rm=T)返回-Inf.

有没有办法在一个班轮上做到这一点?

jos*_*ber 6

由于您正在比较两个数字向量,因此将它们转换为逻辑向量以确定成对最大值对我没有意义.pmax返回向量的元素最大值,并附带一个na.rm处理缺失值的选项:

pmax(v1, v2, na.rm=TRUE)
# [1]  1  0  1  0  1  1  1 NA  0  1
Run Code Online (Sandbox Code Playgroud)