Jak naprawić: błąd w n(): tej funkcji nie należy wywoływać bezpośrednio


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

 Error in n(): This function should not be called directly

Ten błąd zwykle występuje, gdy próbujesz użyć funkcji n() pakietu dplyr , ale pakiet plyr jest ładowany po pakiecie dplyr .

W tym samouczku dokładnie wyjaśniono, jak naprawić ten błąd.

Jak odtworzyć błąd

Załóżmy, że mamy następującą ramkę danych w R:

 #define data frame
df <- data. frame (team=rep(c('A', 'B'), each= 5 ),
                 points=c(2, 4, 6, 8, 10, 12, 14, 16, 18, 20),
                 assists=c(4, 7, 11, 16, 22, 29, 38, 49, 63, 80))

#view data frame
df

   team points assists
1 to 2 4
2 to 4 7
3 to 6 11
4 to 8 16
5 to 10 22
6 B 12 29
7 B 14 38
8 B 16 49
9 B 18 63
10 B 20 80

Załóżmy teraz, że spróbujemy użyć funkcji podsumowania dplyr () do zliczenia liczby wierszy pogrupowanych według zespołu:

 library (dplyr)
library (plyr)

#attempt to count rows by team
df %>%
  group_by(team) %>%
  summarize(count = n())

Error in n(): This function should not be called directly 

Otrzymujemy błąd, ponieważ załadowaliśmy pakiet plyr po pakiecie dplyr , co powoduje problemy.

Jak naprawić błąd

Sposobem na naprawienie tego błędu jest po prostu użycie dplyr:summarize , aby R wiedział dokładnie, z którego pakietu chcesz skorzystać z funkcji podsumowania :

 library (dplyr)
library (plyr)

#count rows by team
df %>%
  group_by(team) %>%
  dplyr::summarize(count = n())

# A tibble: 2 x 2
  team count
   
1 to 5
2 B 5

Zauważ, że tym razem jesteśmy w stanie policzyć liczbę wierszy pogrupowanych według zespołów bez żadnych błędów, ponieważ do wykonania podsumowania użyliśmy dplyr::summarize .

Dodatkowe zasoby

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

Jak naprawić w R: błąd w as.Date.numeric(x): należy podać „pochodzenie”.
Jak naprawić: Błąd w stripchart.default(x1, …): Nieprawidłowa metoda kreślenia
Jak naprawić: błąd w eval (predvars, data, env): nie znaleziono obiektu „x”.

Dodaj komentarz

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