R 为什么悲伤的文字是积极的?

R 为什么悲伤的文字是积极的?,r,string,numbers,R,String,Numbers,我有一个字符串,当和数字比较时,它不会断开,并且说这是正的,有什么提示为什么会发生这种情况吗 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

我有一个字符串,当和数字比较时,它不会断开,并且说这是正的,有什么提示为什么会发生这种情况吗

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
与作为数字类型的
0
进行比较时,前者将转换为字符
'0'

  • x==0
    计算结果为
    FALSE
    ,因为
    “天气不好…”“0”
  • x<0
    的计算结果为
    FALSE
    ,因为在订购时,
    0
    放在
    前面的是“天气不好…”
…字符向量中字符串的比较在 正在使用区域设置的排序顺序的字符串

这意味着由于字典顺序的原因,
x
被认为大于
'0'

  • 最后,
    x>0
    的计算结果为
    TRUE
    ,因为
    '0'
    'day is bad,I not…'
    之前,您的代码返回
    [1]x为正
如果为了证明我们的假设,我们问自己Chuck Norris是否能够战胜无穷大,我们发现事实并非如此:

'Chuck Norris' > Inf
# [1] FALSE
相反,基思·理查兹(Keith Richards),正如任何人所预料的那样,对此没有问题:

'Keith Richards' > Inf
# [1] TRUE

如果您有一个字符串“x”,那么您正在与
x==0
进行比较,您是否遗漏了任何代码?这可能是ASCII代码的结果,其中的值将大于数字0。例如,
letters>0
的想法是看代码是否最终会被破解。这有点让人困惑,我看到了不应该进行这种比较的潜在问题。笑出最后一部分:0个伟大的例子!谢谢你的详细回答!
sort(c(x, 0))
#[1] "0"                                                                   
#[2] "The day is bad, I don't like anything! I feel bad and sad really sad"
'Chuck Norris' > Inf
# [1] FALSE
'Keith Richards' > Inf
# [1] TRUE