将字符串强制转换为int

时间:2012-04-12 14:52:01

标签: r

任何人都可以解释为什么R中会发生以下情况:

> 0.0 < "14.9a"
[1] TRUE

> 2.03 < "14.9a"
[1] FALSE

> 10.11006 < "14.9a"
[1] TRUE

当“14.9a”被内部强制转换为int时会发生什么?它不能像第二个例子那样忽略非数字字符。

2 个答案:

答案 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”)