Jak naprawić w r: błąd: próba zastosowania funkcji niebędącej funkcją


Błąd, który możesz napotkać w R to:

 Error: attempt to apply non-function

Ten błąd zwykle występuje, gdy próbujesz pomnożyć wartości w R, ale zapominasz o dołączeniu znaku mnożenia ( * ).

W tym samouczku dokładnie wyjaśniono, jak poradzić sobie z tym błędem w dwóch różnych scenariuszach.

Scenariusz 1: Rozwiązanie błędu przy mnożeniu ramki danych

Załóżmy, że tworzymy następującą ramkę danych w 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

Załóżmy teraz, że próbujemy utworzyć nową kolumnę równą kolumnie x pomnożonej przez 10:

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

Error: attempt to apply non-function

Otrzymujemy błąd, ponieważ zapomnieliśmy umieścić znak mnożenia ( * ).

Aby rozwiązać ten błąd, musisz dołączyć znak mnożenia:

 #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

Scenariusz 2: Rozwiąż błąd mnożenia wektorów

Załóżmy, że tworzymy dwa wektory w R i próbujemy pomnożyć odpowiadające im elementy razem:

 #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

Otrzymujemy błąd, ponieważ nie dodaliśmy znaku mnożenia.

Aby rozwiązać ten błąd, musisz dołączyć znak mnożenia:

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

[1] 5 12 16 14 32 40 54

Należy pamiętać, że tym razem nie zostaną wygenerowane żadne błędy.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w R:

Jak naprawić: warunek ma długość > 1 i zostanie użyty tylko pierwszy element
Jak naprawić: nienumeryczny argument operatora binarnego
Jak naprawić: dim(X) musi mieć dodatnią długość
Jak naprawić: błąd podczas wybierania nieużywanych argumentów

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *