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"
答案 0 :(得分:4)
来自?Comparison
(或?">"
):
如果两个参数是不同类型的原子矢量,则一个是 强迫对方的类型,(递减)顺序 优先级是字符,复数,数字,整数,逻辑和 原料
数字0被转换为字符以匹配另一个参数(&#34;&#34;或&#34; kj&#34;),因此我们最终得到这些比较:
"">"0" ## FALSE
"kj">"0" ## TRUE
即,它是词典比较。
可以说,如果字符与数字的比较给出了NA
,那就不那么令人惊讶了,但这并不是语言的定义方式。