Почему сравнение между числовыми и символьными переменными не дает предупреждения?
У меня была ошибка в моем коде, вызванная непреднамеренным сопоставлением символьной переменной и числовой переменной (оба они должны были быть числовыми). Эта ошибка была бы намного легче найти, если бы у R было предупреждение при выполнении такого типа сравнения. Например, почему это не вызывает предупреждение.
> 'two' < 5
[1] FALSE
но это вызывает предупреждение
> as.numeric('two') < 5
[1] NA
Warning message:
NAs introduced by coercion
Мне непонятно, что происходит за кулисами в первом сравнении?
Ответы
Ответ 1
В вашем примере 5
преобразуется в символ, поэтому тест те же, что и 'two' < as.character(5)
.
От ?Comparison
:
Если два аргумента являются атомными векторами разных типов, принуждение к типу другого, (убывающий) порядок приоритета быть символом, сложным, числовым, целым, логическим и необработанным.