Como corrigir no r: erro: tentando aplicar uma não função


Um erro que você pode encontrar no R é:

 Error: attempt to apply non-function

Este erro geralmente ocorre quando você tenta multiplicar valores em R mas esquece de incluir um sinal de multiplicação ( * ).

Este tutorial explica exatamente como lidar com esse erro em dois cenários diferentes.

Cenário 1: Resolver erro na multiplicação do quadro de dados

Suponha que criemos o seguinte quadro de dados em 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

Agora suponha que tentamos criar uma nova coluna igual à coluna x multiplicada por 10:

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

Error: attempt to apply non-function

Recebemos um erro porque esquecemos de incluir um sinal de multiplicação ( * ).

Para resolver este erro, você deve incluir um sinal de multiplicação:

 #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

Cenário 2: Resolva o erro de multiplicação vetorial

Suponha que criemos dois vetores em R e tentemos multiplicar seus elementos correspondentes:

 #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

Estamos recebendo um erro porque não incluímos um sinal de multiplicação.

Para resolver este erro, você deve incluir um sinal de multiplicação:

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

[1] 5 12 16 14 32 40 54

Observe que nenhum erro será produzido desta vez.

Recursos adicionais

Os tutoriais a seguir explicam como corrigir outros erros comuns no R:

Como corrigir: a condição tem comprimento > 1 e apenas o primeiro elemento será usado
Como corrigir: argumento não numérico do operador binário
Como corrigir: dim(X) deve ter um comprimento positivo
Como corrigir: erro ao selecionar argumentos não utilizados

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *