15

我的代码中有一个错误,这是由于字符变量和数字变量之间的无意比较(它们都应该是数字的)。如果 R 在进行这种类型的比较时有警告,这个 bug 会更容易找到。例如,为什么这不会引发警告

> 'two' < 5
[1] FALSE

但这确实会发出警告

> as.numeric('two') < 5
[1] NA
Warning message:
NAs introduced by coercion 

我不清楚第一次比较的幕后情况是什么?

4

1 回答 1

27

在您的示例5中转换为字符,因此测试与'two' < as.character(5).

来自?Comparison

如果这两个参数是不同类型的原子向量,则将一个强制转换为另一个的类型,优先级(递减)顺序为字符、复杂、数字、整数、逻辑和原始。

于 2013-09-25T16:10:54.677 回答