为什么悲伤的文本是正面的?

时间:2019-05-25 18:58:17

标签: 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 is negative")
}

结果是:

"x is positive"

1 个答案:

答案 0 :(得分:6)

?'>'
  

...如果两个参数是不同类型的原子向量,则一个是   强迫其他类型,优先级(递减)   是字符,复杂,数字,整数,逻辑和原始...

因此,当您将{em}字符向量x数字类型的0进行比较时,前者将转换为字符{{ 1}}:

  • '0'的值为x == 0,因为FALSE;
  • "The day is bad..." != "0"的值为x < 0,因为在订购时,FALSE被放置在 0之前:
  

...字符向量中字符串的比较在内部是字典式的   字符串使用使用中的语言环境的整理顺序...

"The day is bad..."

这意味着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...'

如果,为了证明我们的假设,我们问自己,查克·诺里斯(Chuck Norris)是否能够击败无限,我们发现事实并非如此:

[1] x is positive

相反,正如任何人所期望的那样,基思·理查兹对此毫无疑问:

'Chuck Norris' > Inf
# [1] FALSE