Одна ошибка, с которой вы можете столкнуться в 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 A 10 7
2 A 12 8
3 A 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 A 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) должен иметь положительную длину
Как исправить: ошибка при выборе неиспользуемых аргументов