我有以下向量:
A <- c(8.4, 9.5, 8.1)
B <- c(NA,NA,NA)
我希望R执行以下操作:如果在A列中值小于8.5或者在B列中值小于8则写入&#34; TRUE&#34;否则写入&#34; FALSE&#34 ;。
我尝试了以下内容:
C <- (A <8.5 | B <8)
我期待以下内容:TRUE,FALSE,TRUE
但结果是:
> C
# [1] TRUE NA TRUE
显然,当R看到A在第二个变量中不小于8.5时,它转到B,当有NA时,它将NA写为输出。
你有什么建议我可以避免这个吗?
答案 0 :(得分:4)
您可以使用is.na
功能首先确定B是否为NA
,如果设置为B,则可以检查它是否小于8.
C <-(A < 8.5 | (!is.na(B) & B < 8) )
答案 1 :(得分:4)
使用isTRUE
:
isTRUE( FALSE | NA)
[1] FALSE
使用“C”作为变量名称是不明智的,因为“c”和“C”都是(不同的)R函数。但是以你的例子为例:
> sapply(C, isTRUE)
[1] TRUE FALSE TRUE