将FALSE | NA和NA | FALSE视为FALSE的矢量化OR函数?

5

给定以下向量:

vect1 <- c(TRUE,FALSE,FALSE,NA,NA,NA,TRUE,FALSE,NA,FALSE)
vect2 <- c(TRUE,NA,FALSE,NA,FALSE,TRUE,FALSE,NA,TRUE,NA)
vect3 <- vect1 | vect2
vect3 #c(TRUE,NA,FALSE,NA,NA,TRUE,TRUE,NA,TRUE,NA)

是否有一个矢量化的中缀函数x,可以像这样计算元素:

TRUE x TRUE #TRUE
TRUE x FALSE #TRUE
FALSE x TRUE #TRUE
FALSE x FALSE #FALSE
TRUE x NA #TRUE
NA x TRUE #TRUE
FALSE x NA #FALSE - would have been NA with ordinary "|"
NA x FALSE #FALSE - would have been NA with ordinary "|"
NA x NA #NA

像这样生成一个向量 vect4

vect4 #c(TRUE,FALSE,FALSE,NA,FALSE,TRUE,TRUE,FALSE,TRUE,FALSE)

还有其他简单的方法可以从vect1vect2输出vect4吗?

1个回答

7
您可以计算并行最大值(使用 na.rm = TRUE),然后将其转换为 logical
as.logical(pmax(vect1, vect2, na.rm = TRUE))
# [1]  TRUE FALSE FALSE    NA FALSE  TRUE  TRUE FALSE  TRUE FALSE

注意,在计算逻辑向量的最大值时,TRUE被解释为整数1,FALSE被解释为整数0。

谢谢,这真的很简洁! - CarlAH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接