为什么R中的“ 1”<2等于FALSE?




boolean comparison (2)

help("<")

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

因此,在这种情况下,数字的优先级低于字符。 因此 2 被强制为字符 "2" 。 字符向量中字符串的比较是按字典顺序进行的,据我所知,它是按字母顺序排列的,但与语言环境有关。

我正在阅读Hadley Wickham关于胁迫的Advanced R部分,但我无法理解此比较的结果:

"one" < 2
# [1] FALSE

我假设R将2强制转换为字符,但是我不明白为什么R返回 FALSE 而不是返回错误。 因为这令我特别困惑

-1 < "one"
# TRUE

所以我的问题有两个:首先,为什么要回答这个问题;其次,有没有办法看到R如何像这些示例一样在逻辑向量中转换单个元素?


它将2强制转换为字符,然后按字母顺序进行比较。 并且假定数字字符先于字母字符

获得有关行为的一般性尝试

'a'<'1'
'1'<'.'
'b'<'B'
'a'<'B'
'A'<'B'
'C'<'B'




coercion