Как исправить: ошибка в fun(newx[, i],…): тип аргумента ' (символ)
Ошибка, с которой вы можете столкнуться в R:
Error in sum(x): invalid 'type' (character) of argument
Эта ошибка возникает при попытке выполнить математическую операцию (например, получение суммы, среднего значения, числа и т. д.) над вектором символов.
В этом руководстве объясняется, как устранить эту ошибку на практике.
Как воспроизвести ошибку
Предположим, мы создаем следующий кадр данных в R:
#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'),
points=c(10, 12, 15, 20, 26, 25),
rebounds=c(7, 8, 8, 14, 10, 12))
#view data frame
df
team points rebounds
1 to 10 7
2 to 12 8
3 to 15 8
4 B 20 14
5 B 26 10
6 B 25 12
Теперь предположим, что мы пытаемся посчитать сумму столбца «команда»:
#attempt to calculate sum of values in 'team' column
sum(df$team)
Error in sum(df$team): invalid 'type' (character) of argument
Мы получаем ошибку, поскольку столбец «команда» является столбцом символов.
Мы можем подтвердить это с помощью функции class() :
#view class of 'team' column
class(df$team)
[1] “character”
Как исправить ошибку
Чтобы обойти эту ошибку, используйте только математические операции с числовыми векторами.
Например, мы могли бы использовать функцию sum() для расчета суммы значений в столбце «точки»:
#calculate sum of values in 'points' column
sum(df$points)
[1] 108
Мы также могли бы рассчитать сумму значений очков, сгруппированных по командам:
#calculate sum of points, grouped by team
aggregate(points ~ team, df, sum)
team points
1 to 37
2 B 71
Мы могли бы даже вычислить сумму очков и подборов, сгруппированных по командам:
#calculate sum of points and sum of rebounds, grouped by team
aggregate(.~team, df, sum)
team points rebounds
1 A 37 23
2 B 71 36
Обратите внимание: ни при одной из этих операций мы не получаем ошибок, поскольку пытаемся вычислить только сумму числовых переменных.
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в R:
Как исправить: длина условия > 1 и будет использоваться только первый элемент
Как исправить: нечисловой аргумент бинарного оператора
Как исправить: dim(X) должен иметь положительную длину
Как исправить: ошибка при выборе неиспользуемых аргументов