Как исправить в 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 или более уровнями

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.