为什么数字和字符变量之间的比较不会发出警告?

fxr*_*hvk 12 r

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

> 'two' < 5
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

但这确实引发了警告

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

我不清楚在第一次比较中幕后发生了什么?

Pey*_*ton 23

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

来自?Comparison:

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

  • 有关包含非字母数字字符的函数的文档,请将其括在反引号`?\`<\``中,或使用带引号的帮助函数:`help("<")`. (5认同)
  • @RicardoSaporta或使用`?"<"` (2认同)