为什么字符与数字上的逻辑运算符返回TRUE / FALSE?

时间:2019-10-07 02:15:50

标签: r

请参见以下示例。逻辑运算符<与chracter和numeric一起使用,并且在某些情况下返回TRUE。我感到困惑,因为它应该返回NA或至少返回FALSE。这是R设计的吗?
如果您向我展示了一种简单的替代方法,我将不胜感激。 (我可以在逻辑判断之前使用自定义函数检查类解决此问题。是否有更好的解决方案?)

"(abc" < 0              # TRUE
"(abc" < -1             # FALSE
"abc" < 9999999999      # FALSE
"abc" < Inf             # TRUE

1 个答案:

答案 0 :(得分:1)

很可能R正在对您的不等式的RHS进行字符转换。也就是说,R实际上进行了以下比较:

"(abc" < "0"
"(abc" < "-1"
"abc" < "999999999"
"abc" < Inf

[1] TRUE
[1] FALSE
[1] FALSE
[1] TRUE

请注意,输出与您当前的输出一致,后者在RHS上使用数字文字。