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