在R中TRUE/FALSE的结果

3

我有以下向量:

A <- c(8.4, 9.5, 8.1)
B <- c(NA,NA,NA)

我能够帮助您翻译以下内容,这是关于IT技术的相关内容。您希望实现的功能是:如果A列中的值小于8.5或B列中的值小于8,则写入“TRUE”,否则写入“FALSE”。
我尝试了以下方法:
C <- (A <8.5 | B <8)

我原本期望的结果是:真、假、真。
但实际得到的结果为:
> C
# [1] TRUE   NA TRUE

显然,当R看到第二个变量中的A不小于8.5时,它就去了B,而当出现NA时,它将NA写成输出。

您有什么建议可以避免这种情况发生吗?


这取决于你想如何处理NA值。根据你期望的输出,NA值应该被视为一个大数。也许你可以用Inf替换NA值,然后执行你的操作。 - Enrique
2个回答

4
使用 isTRUE
 isTRUE( FALSE | NA)
[1] FALSE

在编写代码时,使用"C"作为变量名是不明智的,因为大小写不同的"C"和"c"都是不同的R函数。但是根据您的例子:

> sapply(C, isTRUE)
[1]  TRUE FALSE  TRUE

4

您可以使用is.na函数,首先确定B是否为NA,如果是,则可以检查它是否小于8。

C <-(A < 8.5 | (!is.na(B) & B < 8) )

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