为什么 R 中 0 >“某个字符串”的计算结果为 TRUE?[复制]

Why does "some string" > 0 evaluate to TRUE in R? [duplicate]

提问人:Snoeren01 提问时间:10/30/2023 更新时间:10/30/2023 访问量:56

问:

为什么 R 的计算结果为 TRUE?
我最初认为这可能是由于隐式类型转换,或者 R 将其解释为 .情况似乎并非如此:
"string" > 0nchar("string") > 0

"some string" > 0
#[1] TRUE

# Verify if any other comparison is true:
"some string" < 0
# [1] FALSE
"some string" == 0
#[1] FALSE

# Check for implicit type conversion:
as.numeric("some string")
#[1] NA
as.integer("some string")
# [1] NA
NA == 0
#[1] NA # So this is not what is happening under the hood

# Check if the comparison is translated to nchar(...) > 0:
nchar("some string")
# [1] 11
"some string" > 1000000
#[1] TRUE # The result seems to stay the same for any number!

我发现了一个类似的PHP问题,但这并没有帮助我理解R的行为:
为什么“someString” == 0在PHP中计算为true

R 布尔 字符串比较

评论


答:

3赞 Konrad Rudolph 10/30/2023 #1

我首先认为这可能是由于隐式类型转换造成的

是的!

只是与你的想法相反。你可以通过强制转换为通用类型来自己检查这一点——例如,将两者都放入一个向量中:

c("string", 0)
# [1] "string" "0"

因此,它将两个参数强制为 string 和 >(字符的数值按顺序排列,使所有数字都出现在所有字母之前)。"s""0"