TRUE == "TRUE"是TRUE在R'===在R中有任何等价物吗?更新:
这些都回归了FALSE:
TRUE == "True"
TRUE == "true"
TRUE == "T"
Run Code Online (Sandbox Code Playgroud)
唯一的TRUE价值是TRUE == "TRUE".
如果检查identical()一切正常.
第二次更新:
通过===运营商我的意思是检查的过程值和数据类型一的变量.在这种情况下,我假设==操作符只会比较变量的值,而不是它们的数据类型.
我正在阅读Hadley Wickham关于强制的高级R部分,我无法理解这种比较的结果:
"one" < 2
# [1] FALSE
Run Code Online (Sandbox Code Playgroud)
我假设R将2强制转换为一个字符,但我不明白为什么R返回FALSE而不是返回错误.这对我来说尤其令人费解
-1 < "one"
# TRUE
Run Code Online (Sandbox Code Playgroud)
所以我的问题有两个方面:首先,为什么这个答案,第二,有没有办法看到R如何在这些例子中转换逻辑向量中的各个元素?
在控制台中,继续尝试
> sum(sapply(1:99999, function(x) { x != as.character(x) }))
0
Run Code Online (Sandbox Code Playgroud)
对于通过99999的所有值1, "1" == 1,"2" == 2,...,99999 == "99999"是TRUE.然而,
> 100000 == "100000"
FALSE
Run Code Online (Sandbox Code Playgroud)
为什么R有这种古怪的行为,这是一个错误吗?什么是解决方法,例如,检查原子字符向量中的每个元素是否实际上是数字的?现在我试图检查是否x == as.numeric(x)每个x,但由于上述问题导致某些数据集失败!
就像标题说的那样,为什么"1" == 1是TRUE?这背后的真正原因是什么?R是想和善还是其他呢?我一直在想,因为“ 1”(或任何数字,实际上都没有关系)被R读取为字符时,如果与as.numeric(1)或进行比较,它将自动返回FALSE as.integer(1)。
> as.character(1) == as.numeric(1)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
要么
> "1" == 1
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
我想这是一个简单的问题,但我想得到一个答案。谢谢。