Как исправить в 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

  xy
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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *