我有一个字符串,虽然与数字比较它没有中断,并说这是正的,有任何提示为什么会发生这种情况吗?
x <- "The day is bad, I don't like anything! I feel bad and sad really sad"
if (x == 0) {
print("x is equal to 0")
}else if (x > 0) {
print("x is positive")
}else if (x < 0 ){
print("x is negative")
}结果是:
"x is positive"发布于 2019-05-26 05:07:35
?'>'...If这两个参数是不同类型的原子向量,一个被强制为另一个的类型,优先顺序为character,complex,numeric,integer,logical和raw...
因此,当您将字符矢量x与数字类型0进行比较时,前者被转换为字符'0'
x == 0的计算结果为FALSE,因为"The day is bad..." != "0";x < 0的计算结果为FALSE,因为在排序时,0放在"The day is bad..."之前:字符向量中的字符串的排序顺序(
...Comparison )在字符串中是按字典顺序的,使用的是正在使用的区域设置的排序序列...
sort(c(x, 0))
#[1] "0"
#[2] "The day is bad, I don't like anything! I feel bad and sad really sad"这意味着由于字典顺序的原因,x被认为比'0'大。
x > 0的计算结果为TRUE,因为'0'在'The day is bad, I dont...'之前,并且您的代码返回[1] x is positive如果,为了证明我们的假设,我们问自己,Chuck Norris是否能够击败无限,我们发现事实并非如此:
'Chuck Norris' > Inf
# [1] FALSE相比之下,基思·理查兹( Keith Richards ),正如任何人所预期的那样,对此没有问题:
'Keith Richards' > Inf
# [1] TRUEhttps://stackoverflow.com/questions/56307833
复制相似问题