提问人:Mahdi 提问时间:2/18/2013 最后编辑:HenrikMahdi 更新时间:7/21/2021 访问量:4652
为什么 TRUE == “TRUE” 在 R 中是 TRUE?
Why TRUE == "TRUE" is TRUE in R?
问:
- 为什么在 R 中?
TRUE == "TRUE"
TRUE
- R 中是否有任何等价物?
===
更新:
这些都回来了:FALSE
TRUE == "True"
TRUE == "true"
TRUE == "T"
唯一的值是 。TRUE
TRUE == "TRUE"
如果检查一切正常。identical()
第二次更新:
我所说的运算符是指检查变量的 Value 和 Data Type 的过程。在本例中,我假设运算符只会比较变量的值,而不会比较它们的数据类型。===
==
答:
根据帮助文件:?`==`
如果两个参数是不同类型的原子向量,则一个参数被强制为另一个参数的类型,(递减)优先级顺序是字符、复数、数字、整数、逻辑和原始。
所以被强迫(即),因此是平等的。TRUE
"TRUE"
as.character(TRUE)
其他语言中的运算符(即两个对象是否相等且类型相同)的等价物是函数:===
identical
identical(TRUE, "TRUE")
[1] FALSE
评论
identical
TRUE == "T"
TRUE == "true"
FALSE
==
NaN===NaN
single.NA=FALSE
identical
identical(log(-1), 0*Inf)
identical(log(-1), 0*Inf, single.NA=FALSE)
identical(NaN, NaN, single.NA=FALSE)
NA
NaN
TRUE 和 FALSE 是 R 中的保留字。当他说任何非零值为 TRUE 时,我认为 eznme 是正确的(在他编辑之前),因为计算结果为 FALSE。(这在解释为什么计算结果为 TRUE 时是正确的,但它不能解释TRUE == "A"
TRUE == 1
TRUE == 7
plannapus 给出的解释脱离了描述 的行为的上下文。它更接近“真相”,因为正是运算符对 TRUE 的隐含强制创造了这个结果。尽管最初为 TRUE 和 FALSE 指定了 TRUE 和 FALSE 值,但可以将它们重新分配给其他值或类型。as.logical
==
T
F
> TRUE == as.logical( c("TRUE", "T", "true", "True") )
[1] TRUE TRUE TRUE TRUE
> TRUE == 7
[1] FALSE
> TRUE == as.logical(7)
[1] TRUE
> TRUE == as.logical("A")
[1] NA
(我之前错误地写道,TRUE == “TRUE” 引起的强制是合乎逻辑的;它实际上是通过 as.character(TRUE) 返回 “TRUE”。
评论
as.logical
==
since TRUE == "A" evaluates to FALSE
:因为它们是不同的价值观!
除了
TRUE == “真”
这些也是正确的:
- 真==1
- 真==1.0
- TRUE==1.00000000000000001
- 真==0.9999999999999999999 等等,一般来说,所有值都足够接近 1.0,可以IEEE754舍入到它。
但更有趣的是 if()
检查:它检查;事实上,这情节!non-false
if(4.0) plot(1)
我认为唯一不触发的值是 0、F、FALSE 和“FALSE”,它们似乎被定义为正好 0。if()
评论
===