Oplossing: fout in n(): deze functie mag niet rechtstreeks worden aangeroepen


Een fout die je tegen kunt komen in R is:

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

Deze fout treedt meestal op wanneer u de functie n() van het dplyr- pakket probeert te gebruiken, maar het plyr- pakket wordt na het dplyr- pakket geladen.

In deze tutorial wordt precies uitgelegd hoe u deze fout kunt oplossen.

Hoe de fout te reproduceren

Stel dat we het volgende dataframe in R hebben:

 #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

Stel nu dat we de functie summary() van dplyr proberen te gebruiken om het aantal rijen te tellen, gegroepeerd per team:

 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 

We ontvangen een foutmelding omdat we het plyr- pakket na het dplyr- pakket hebben geladen, wat problemen veroorzaakt.

Hoe u de fout kunt oplossen

De manier om deze fout op te lossen is door simpelweg dplyr:summarize te gebruiken, zodat R precies weet uit welk pakket je de samenvattingsfunctie wilt gebruiken:

 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

Merk op dat we deze keer zonder fouten het aantal rijen gegroepeerd per team kunnen tellen, omdat we dplyr::summarize hebben gebruikt om de samenvatting uit te voeren.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in R kunt oplossen:

Hoe op te lossen in R: fout in as.Date.numeric(x): „origin“ moet worden opgegeven
Oplossing: Fout in stripchart.default(x1, …): Ongeldige plotmethode
Hoe op te lossen: fout in eval (predvars, data, env): object ‚x‘ niet gevonden

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert