J'essaie de reproduire l'un des exemples du paquet dplyr mais ce message d'erreur. Je m'attends à voir une nouvelle colonne n produite avec la fréquence de chaque combinaison. Quelqu'un peut-il me dire ce qui me manque? J'ai vérifié trois fois que le paquet est chargé. Merci pour l'aide, comme toujours.
library(dplyr)
# summarise peels off a single layer of grouping
by_vs_am <- group_by(mtcars, vs, am)
by_vs <- summarise(by_vs_am, n = n())
Erreur dans n(): cette fonction ne doit pas être appelée directement
Je suppose que vous avez dplyr
et plyr
chargés dans la même session. dplyr
n'est pas plyr
. ddply
n'est pas une fonction du package dplyr
.
dplyr
et plyr
ont tous deux les fonctions summarise
/summarize
.
Regardez les résultats de conflicts()
pour voir les objets masqués.
Comme mentionné dans la réponse précédente, vous pouvez avoir un conflit entre plyr et dplyr. Vous pouvez exécuter cette commande pour décharger le paquet plyr.
detach("package:plyr", unload=TRUE)
Ensuite, vous pouvez continuer comme prévu.
library(dplyr)
...
summarise(n = n())
Pour éviter les confusions avec les fonctions de masquage, il est clair d'utiliser la spécification "package :: function", comme dans l'exemple ci-dessous:
delay <- dplyr::summarise(by_tailnum,
count = n(),
dist = mean(distance, na.rm = TRUE),
delay = mean(arr_delay, na.rm = TRUE))
Dans un autre cas, cette erreur s'est produite dans le code suivant.
library(dplyr) # dplyr 0.5.0
library(lazyeval)
df <- data_frame(group = c(1, 2, 2, 3, 3, 3))
g <- "group"
df %>%
group_by_(g) %>%
summarise_(
n = n(),
sum = interp(~sum(col, na.rm = TRUE), col = as.name(g))
)
# Error in n() : This function should not be called directly
Il peut être résolu comme suit.
df %>%
group_by_(g) %>%
summarise_(
n = "n()",
sum = interp(~sum(col, na.rm = TRUE), col = as.name(g))
)
# A tibble: 3 × 3
# group n sum
# <dbl> <int> <dbl>
# 1 1 1 1
# 2 2 2 4
# 3 3 3 9
pour moi, la solution était detach()
function J'ai utilisé cette fonction
Problème similaire rencontré lors de l’exécution du code conformément au blog mentionné, puis exécution de la solution en mode détaché ("package: plyr", unload = TRUE)
Blog: https://www.analyticsvidhya.com/blog/2017/09/comparative-stock-analysis/
Master_Data_AutoCorrelations<-Master_Data_lags %>%
gather(key = "lag", value = "lag_value", -c(Stock,Date, Close)) %>%
mutate(lag = str_sub(lag, start = 5) %>% as.numeric) %>%
group_by(Stock, lag) %>%
summarize(
cor = cor(x = Close, y = lag_value, use = "pairwise.complete.obs"),
cutoff_upper = 2/(n())^0.5,
cutoff_lower = -2/(n())^0.5
)
Post running detach, lorsque le code ci-dessus a été réexécuté, il a bien fonctionné, bien que le message d’avertissement ait été reçu, comme indiqué ci-dessous, ne sachant pas si le plyr a été déchargé ou non.
Message d’avertissement: l’espace de noms "plyr" ne peut pas être déchargé: l’espace de noms "plyr" est importé par "reshape2", "balances", "balai", "ggplot2" et ne peut donc pas être déchargé.