Comment réparer : erreur dans n() : cette fonction ne doit pas être appelée directement
Une erreur que vous pouvez rencontrer dans R est :
Error in n() : This function should not be called directly
Cette erreur se produit généralement lorsque vous essayez d’utiliser la fonction n() du package dplyr , mais que le package plyr est chargé après le package dplyr .
Ce didacticiel explique exactement comment corriger cette erreur.
Comment reproduire l’erreur
Supposons que nous ayons le bloc de données suivant dans 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 A 2 4
2 A 4 7
3 A 6 11
4 A 8 16
5 A 10 22
6 B 12 29
7 B 14 38
8 B 16 49
9 B 18 63
10 B 20 80
Supposons maintenant que nous essayions d’utiliser la fonction summary() de dplyr pour compter le nombre de lignes, regroupées par équipe :
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
Nous recevons une erreur car nous avons chargé le package plyr après le package dplyr , ce qui provoque des problèmes.
Comment réparer l’erreur
La façon de corriger cette erreur consiste simplement à utiliser dplyr:summarize afin que R sache exactement à partir de quel package vous souhaitez utiliser la fonction de résumé :
library(dplyr)
library(plyr)
#count rows by team
df %>%
group_by(team) %>%
dplyr::summarize(count = n())
# A tibble: 2 x 2
team count
1 A 5
2 B 5
Notez que nous sommes capables de compter le nombre de lignes regroupées par équipe sans aucune erreur cette fois puisque nous avons utilisé dplyr::summarize pour effectuer le résumé.
Ressources additionnelles
Les didacticiels suivants expliquent comment résoudre d’autres erreurs courantes dans R :
Comment réparer dans R : erreur dans as.Date.numeric(x) : « origine » doit être fournie
Comment réparer : erreur dans stripchart.default(x1, …) : méthode de traçage non valide
Comment réparer : erreur dans eval (predvars, data, env) : objet ‘x’ introuvable