Как исправить в R: Ошибка: попытка применить нефункцию


Одна ошибка, с которой вы можете столкнуться в R:

Error: attempt to apply non-function

Эта ошибка обычно возникает, когда вы пытаетесь умножить значения в R, но забыли включить знак умножения ( * ).

В этом руководстве рассказывается, как именно справиться с этой ошибкой в двух разных сценариях.

Сценарий 1. Устранение ошибки при умножении фрейма данных

Предположим, мы создаем следующий фрейм данных в R:

#create data frame
df <- data.frame(x=c(1, 2, 6, 7),
 y=c(3, 5, 5, 8))

#view data frame
df

 x y
1 1 3
2 2 5
3 6 5
4 7 8

Теперь предположим, что мы пытаемся создать новый столбец, равный столбцу x, умноженному на 10:

#attempt to create new column
df$x_times_10 <- df$x(10)

Error: attempt to apply non-function

Мы получаем ошибку, потому что забыли включить знак умножения ( * ).

Чтобы устранить эту ошибку, мы должны включить знак умножения:

#create new column
df$x_times_10 <- df$x\*(10)

#view updated data frame
df

 x y x_times_10
1 1 3 10
2 2 5 20
3 6 5 60
4 7 8 70

Сценарий 2. Устранение ошибки в векторном умножении

Предположим, мы создаем два вектора в R и пытаемся перемножить их соответствующие элементы:

#create two vectors
x <- c(1, 2, 2, 2, 4, 5, 6)
y <- c(5, 6, 8, 7, 8, 8, 9)

#attempt to multiply corresponding elements in vectors
(x)(y)

Error: attempt to apply non-function

Мы получаем ошибку, потому что мы не включили знак умножения.

Чтобы устранить эту ошибку, мы должны включить знак умножения:

#multiply corresponding elements in vectors
(x)\*(y)

[1] 5 12 16 14 32 40 54

Обратите внимание, что на этот раз ошибка не возникает.

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в R:

Как исправить: условие имеет длину > 1 и будет использоваться только первый элемент
Как исправить: нечисловой аргумент бинарного оператора
Как исправить: dim(X) должен иметь положительную длину
Как исправить: ошибка при выборе неиспользуемых аргументов

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