r语言 - r not in




为什么TRUE==“TRUE”在R中为TRUE? (2)

TRUE和FALSE是R中的保留字。当他说任何非零值为TRUE时,我不认为eznme是正确的(在编辑之前),因为TRUE == "A"计算结果为FALSE。 (这在解释为什么TRUE == 1计算结果为TRUE == 7是正确的,但它不能解释TRUE == 7的结果TRUE == 7

plannapus给出的解释取自描述as.logical行为的as.logical 。 它更接近“真理”,因为它是由创建此结果的==运算符对字符的TRUE隐式强制。 尽管TF最初的值为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

(我之前错误地写道,由TRUE =“TRUE”引起的强制是逻辑的;它实际上是通过as.character(TRUE)返回“TRUE”。)

  1. 为什么TRUE == "TRUE"在R中为TRUE
  2. R中有===等价物吗?

更新:

这些都返回FALSE

TRUE == "True"
TRUE == "true"
TRUE == "T"

唯一的TRUE值为TRUE == "TRUE"

如果用identical()检查一切正常。

第二次更新:

通过===运算符我指的是检查变量数据类型的过程。 在这种情况下,我假设==运算符只会比较变量的 ,而不是它们的数据类型


根据帮助文件?`==`

如果两个参数是不同类型的原子向量,则一个被强制为另一个的类型,优先级(递减)顺序为字符,复数,数字,整数,逻辑和原始。

因此TRUE被强制为"TRUE" (即as.character(TRUE) ),因此是相等的。

运算符===的等价物(即两个对象相等且类型相同)的功能identical

identical(TRUE, "TRUE")
[1] FALSE




boolean-logic