如何在R中发生类型转换?

时间:2016-05-17 14:30:53

标签: r casting

check.num <- function(x){
  if(x>0){
    print("Greater than or equal to 1")
  } else if(x==0){
    print("Equals zero")
  } else if(x<0){
    print("Less than zero")
  } else{
    print("Confused")
  }
}

check.num(1)
#Output: [1] "Greater than or equal to 1"

check.num(0)
#Output: [1] "Equals zero"

check.num(-1)
#Output: [1] "Less than zero"

以下命令如何返回值?我期待着&#39; 0&#39;在第一种情况下,在第二种情况下,#34;困惑&#34;被退回。

check.num("")
#Output: [1] "Less than zero"

check.num("kj")
#Output: [1] "Greater than or equal to 1"

1 个答案:

答案 0 :(得分:4)

来自?Comparison(或?">"):

  

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

数字0被转换为字符以匹配另一个参数(&#34;&#34;或&#34; kj&#34;),因此我们最终得到这些比较:

"">"0"   ## FALSE
"kj">"0" ## TRUE

即,它是词典比较。

可以说,如果字符与数字的比较给出了NA,那就不那么令人惊讶了,但这并不是语言的定义方式。