为什么以下操作会导致非布尔结果?
sum <- TRUE + FALSE
sum
[1] 1
如何获取布尔值的结果?
答案 0 :(得分:1)
在R中,logical()
和FALSE
的{{1}}值的数字表示分别为0和1。在添加这些内容时,它们会隐式转换为数字,因此TRUE
将返回2,而TRUE+TRUE
将返回0。
如果希望得到逻辑结果,请使用逻辑运算符TRUE-TRUE
或|
。
注意,R区分矢量化逻辑运算符和标量。 &
和|
对一组有意义:&
将返回c(FALSE,FALSE,TRUE) & c(TRUE,FALSE,TRUE)
。而c(FALSE,FALSE,TRUE)
仅返回c(FALSE,FALSE,TRUE) && c(TRUE,FALSE,TRUE)
。
要显式转换为逻辑,可以使用FALSE
以非数字形式返回逻辑输出。