为什么"一个" < R中2等于FALSE?

时间:2014-11-18 22:24:14

标签: r boolean comparison boolean-logic coercion

我正在阅读Hadley Wickham关于强制的高级R部分,我无法理解这种比较的结果:

"one" < 2
# [1] FALSE

我假设R将2强加给一个角色,但我不明白为什么R会返回FALSE而不是返回错误。

以后,这对我来说尤其令人费解
-1 < "one"
# TRUE

所以我的问题有两个方面:第一,为什么这个答案,第二,有没有办法看到R如何在这些例子中转换逻辑向量中的各个元素?

2 个答案:

答案 0 :(得分:15)

来自help("<")

  

如果两个参数是不同类型的原子矢量,则一个是   强迫对方的类型,优先顺序(递减)   是字符,复数,数字,整数,逻辑和原始。

因此,在这种情况下,数字的优先级低于字符。因此,2被强制转换为角色"2"。字符向量中字符串的比较是词典,据我所知,它是字母的,但依赖于语言环境。

答案 1 :(得分:9)

它将2强制转换为字符,然后按字母顺序进行比较。假设数字字符在按字母顺序排列之前

了解行为的一般概念尝试

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