R

时间:2015-04-30 20:16:42

标签: r

我有以下向量:

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写为输出。

你有什么建议我可以避免这个吗?

2 个答案:

答案 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