Как исправить в R: нечисловой аргумент бинарного оператора


Одна ошибка, с которой вы можете столкнуться в R:

Error in df$var1- df$var2: non-numeric argument to binary operator

Эта ошибка возникает, когда вы пытаетесь выполнить какую-либо бинарную операцию над двумя векторами, и один из векторов не является числовым.

Примеры бинарных операций включают в себя:

  • Вычитание ( - )
  • Дополнение ( + )
  • Умножение ( * )
  • Дивизия ( / )

Эта ошибка возникает чаще всего, когда один из векторов, которые вы предоставляете, является вектором символов.

В этом руководстве рассказывается, как именно исправить эту ошибку.

Как воспроизвести ошибку

Предположим, у нас есть следующий фрейм данных в R:

#create data frame
df <- data.frame(period = c(1, 2, 3, 4, 5, 6, 7, 8),
 sales = c(14, 13, 10, 11, 19, 9, 8, 7),
 returns = c('1', '0', '2', '1', '1', '2', '2', '3'))

#view data frame
df

 period sales returns
1 1 14 1
2 2 13 0
3 3 10 2
4 4 11 1
5 5 19 1
6 6 9 2
7 7 8 2
8 8 7 3

Теперь предположим, что мы пытаемся создать новый столбец с именем «нетто», вычитая столбец «возврат» из столбца «продажи»:

#attempt to create new column called 'net'
df$net <- df$sales - df$returns

Error in df$sales \* df$returns : non-numeric argument to binary operator

Ошибка возникает из-за того, что столбец «возврат» относится к классу «символ» и невозможно вычесть столбец символов из числового столбца.

#display class of 'sales' column
class(df$sales)

[1] "numeric"

#display class of 'returns' column
class(df$returns)

[1] "character"

Как исправить ошибку

Способ исправить эту ошибку — использовать as.numeric() для преобразования столбца «возврат» в числовой перед выполнением вычитания:

#create new column called 'net'
df$net <- df$sales - as.numeric(df$returns)

#view updated data frame
df

 period sales returns net
1 1 14 1 13
2 2 13 0 13
3 3 10 2 8
4 4 11 1 10
5 5 19 1 18
6 6 9 2 7
7 7 8 2 6
8 8 7 3 4

Мы смогли выполнить вычитание без каких-либо ошибок, потому что столбцы «продажи» и «возвраты» были числовыми.

Дополнительные ресурсы

В следующих руководствах объясняется, как устранять другие распространенные ошибки в R:

Как исправить в R: dim(X) должен иметь положительную длину
Как исправить в R: имена не совпадают с предыдущими именами
Как исправить в R: более длинная длина объекта не кратна более короткой длине объекта
Как исправить в R: контрасты могут применяться только к факторам с 2 или более уровнями