Чтобы процитировать правила предшествования, которые вы уже процитировали:
(убывающий) порядок приоритета, который является символьным, сложным, числовым, целым, логическим и необработанным
Итакв выражении:
"-abc" < 0
происходит то, что 0
на RHS приводится к символу.Это оставляет нам:
"-abc" < "0"
Это лексикографически верно (вы можете проверить сами).Таким образом, выражение оценивается как истинное.Обратите внимание, что если бы приведение пошло другим путем, а именно, если бы R попытался привести "-abc"
к числовому типу, то это привело бы к NA
, и все выражение могло бы быть оценено как NA
, not true:
"-abc" < 0
NA < 0
NA
Итак, вот как мы знаем, что R приводит RHS к символу.
Хорошее эмпирическое правило в R (или SQL, JavaJavaScript, действительно любой язык), чтобы не возиться с типами.Если вы знаете, что ваши данные являются числовыми, то работайте с числовым типом и рассматривайте его как таковой, как наоборот для символьных данных.