我正在阅读Hadley Wickham关于强制的高级R部分,我无法理解这种比较的结果:
"one" < 2
# [1] FALSE
我假设R将2强加给一个角色,但我不明白为什么R会返回FALSE
而不是返回错误。
-1 < "one"
# TRUE
所以我的问题有两个方面:第一,为什么这个答案,第二,有没有办法看到R如何在这些例子中转换逻辑向量中的各个元素?
答案 0 :(得分:15)
来自help("<")
:
如果两个参数是不同类型的原子矢量,则一个是 强迫对方的类型,优先顺序(递减) 是字符,复数,数字,整数,逻辑和原始。
因此,在这种情况下,数字的优先级低于字符。因此,2
被强制转换为角色"2"
。字符向量中字符串的比较是词典,据我所知,它是字母的,但依赖于语言环境。
答案 1 :(得分:9)
它将2强制转换为字符,然后按字母顺序进行比较。假设数字字符在按字母顺序排列之前
了解行为的一般概念尝试
'a'<'1'
'1'<'.'
'b'<'B'
'a'<'B'
'A'<'B'
'C'<'B'