任何人都可以解释为什么R中会发生以下情况:
> 0.0 < "14.9a"
[1] TRUE
> 2.03 < "14.9a"
[1] FALSE
> 10.11006 < "14.9a"
[1] TRUE
当“14.9a”被内部强制转换为int时会发生什么?它不能像第二个例子那样忽略非数字字符。
答案 0 :(得分:14)
我认为它正在做相反的事情并将int转换为字符串。
> "0.0" < "14.9a"
[1] TRUE
> "2.03" < "14.9a"
[1] FALSE
> "10.11006" < "14.9a"
[1] TRUE
从帮助页面:
如果两个参数是不同类型的原子矢量,则一个是 强迫对方的类型,优先顺序(递减) 是字符,复数,数字,整数,逻辑和原始。
还有:
字符向量中字符串的比较是字典中的字典 使用正在使用的语言环境的整理顺序的字符串:请参阅 语言环境。诸如en_US的语言环境的整理顺序通常是 不同于C(应该使用ASCII)并且可能令人惊讶。 谨防对整理顺序做出任何假设......
答案 1 :(得分:5)
根据?"<"
:
如果两个参数是不同类型的原子矢量,则一个是 强迫对方的类型,(递减)顺序 优先级是字符,复数,数字,整数,逻辑和 原料
因此,数值将转换为字符串,然后根据字典顺序对字符串进行比较。 (即,“2”,“10”)