Как исправить: ошибка в 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 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) должен иметь положительную длину
Как исправить: ошибка при выборе неиспользуемых аргументов

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