R:将as.character与as.integer或as.numeric进行比较

R:将as.character与as.integer或as.numeric进行比较,r,R,为什么R会产生以下结果: > as.character('12') > as.integer(2) [1] FALSE > as.character('12') < as.integer(2) [1] TRUE > as.character('12')>as.character('2') [1] FALSE > as.character('12')<as.character('2') [1] TRUE 有什么好处 谢谢, -R在强类型编程语

为什么R会产生以下结果:

> as.character('12') > as.integer(2)
[1] FALSE
> as.character('12') < as.integer(2)
[1] TRUE 
> as.character('12')>as.character('2')
[1] FALSE
> as.character('12')<as.character('2')
[1] TRUE 
有什么好处

谢谢,
-R

在强类型编程语言中,如果不明确定义比较的工作方式,就无法比较不同的类型

在R中,它有点松散。R首先将整数转换为字符串,然后进行字典(字母)比较。考虑这一点:

> as.character('a') < as.integer(2)
[1] FALSE
> as.character('a') > as.integer(2)
[1] TRUE
>as.character('a')as.character('a')>as.integer(2)
[1] 真的

在所有情况下,比较字符串和整数的唯一方法是首先将R转换为字符

根据
?比较

字符向量中字符串的比较是使用所用语言环境的排序顺序在字符串中进行字典排序的:请参阅语言环境。像en_US这样的区域设置的排序顺序通常不同于C(应该使用ASCII),这可能会令人惊讶。注意不要对排序顺序做出任何假设:例如,在爱沙尼亚语中,Z位于S和T之间,排序不一定是逐字符的——在丹麦语中,aa排序为Z之后的单个字母。在威尔士,ng可能是也可能不是一个单独的排序单位:如果是,则跟随g。某些平台可能不尊重区域设置,并且在8位区域设置中总是按字节的数字顺序排序,或者在UTF-8区域设置中总是按Unicode代码点顺序排序(对于不同的字符集,对于相同的语言,可能不会按相同的顺序排序)。非字母(空格、标点符号、连字符、分数等)的排序问题更大