dplyr: "Error en n(): la función no debe invocarse directamente"
function conflicting-libraries (4)
Como se mencionó en la respuesta anterior, es posible que haya un conflicto entre plyr y dplyr. Puede ejecutar este comando para descargar el paquete plyr.
detach("package:plyr", unload=TRUE)
Entonces puedes continuar como se espera.
library(dplyr)
...
summarise(n = n())
Estoy intentando reproducir uno de los ejemplos en el paquete dplyr pero este mensaje de error. Espero ver una nueva columna n producida con la frecuencia de cada combinación. ¿Puede alguien decirme lo que me estoy perdiendo? Comprobé tres veces que el paquete está cargado. Gracias por la ayuda como siempre.
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())
#Error in n() : This function should not be called directly
En otro caso, este error ocurrió en el siguiente código.
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
Se puede resolver de la siguiente manera.
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
Para evitar confusiones con las funciones de enmascaramiento, es claro utilizar la especificación "package :: function", como el siguiente ejemplo:
delay <- dplyr::summarise(by_tailnum,
count = n(),
dist = mean(distance, na.rm = TRUE),
delay = mean(arr_delay, na.rm = TRUE))
Supongo que tiene dplyr
y plyr
cargados en la misma sesión. dplyr
no es plyr
. ddply
no es una función en el paquete dplyr
.
Tanto dplyr
como plyr
tienen las funciones summarise
/ summarize
.
Mire los resultados de los conflicts()
para ver objetos enmascarados.