Mah*_*hdi 53 comparison boolean-logic boolean r
TRUE == "TRUE"是TRUE在R'===在R中有任何等价物吗?更新:
这些都回归了FALSE:
TRUE == "True"
TRUE == "true"
TRUE == "T"
Run Code Online (Sandbox Code Playgroud)
唯一的TRUE价值是TRUE == "TRUE".
如果检查identical()一切正常.
第二次更新:
通过===运营商我的意思是检查的过程值和数据类型一的变量.在这种情况下,我假设==操作符只会比较变量的值,而不是它们的数据类型.
pla*_*pus 57
根据帮助文件?`==`:
如果两个参数是不同类型的原子向量,则一个被强制为另一个的类型,优先级(递减)顺序为字符,复数,数字,整数,逻辑和原始.
所以TRUE被强迫"TRUE"(即as.character(TRUE)),因此是平等.
运算符的等价物===(即两个对象相等且类型相同)将起作用identical:
identical(TRUE, "TRUE")
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
42-*_*42- 10
TRUE和FALSE是R中的保留字.当他说任何非零值为TRUE时,我不认为eznme是正确的(在编辑之前),因为TRUE == "A"评估为FALSE.(这在解释为什么TRUE == 1评估为TRUE时是正确的,但它不能解释结果TRUE == 7
plannapus给出的解释取自描述行为的背景as.logical.它更接近于"真理",因为它是由==创建此结果的运算符对字符的TRUE的隐式强制.虽然T并且F最初被赋予TRUE和FALSE的值,但是可以将它们重新分配给其他值或类型.
> 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
Run Code Online (Sandbox Code Playgroud)
(我之前错误地写道,由TRUE ="TRUE"引起的强制是逻辑的;它实际上是通过as.character(TRUE)返回"TRUE".)