TRUE和FALSE作为布尔值而不是字符

时间:2015-06-04 07:57:50

标签: r

你能详细说明,这里发生了什么:

a = "TRUE"
b = TRUE
a
#[1] "TRUE"
b
#[1] TRUE
str(a)
#chr "TRUE"
str(b)
#logi TRUE
a == b
#[1] TRUE

对于字符串TRUE,这只是"TRUE",例如:

"STRING" == TRUE
#[1] FALSE

所以这不是因为非空字符串是TRUE,例如en { Perl,因此我原以为TRUE == "TRUE"会产生FALSE

1 个答案:

答案 0 :(得分:5)

在帮助文件中引用?Comparison

  

如果两个参数是不同类型的原子矢量,则一个是   强迫对方的类型,优先顺序(递减)   是字符,复数,数字,整数,逻辑和原始。

R会自动强制降低值,导致

"TRUE" == TRUE
# [1] TRUE
1 == TRUE
# [1] TRUE