r function plyr dplyr conflicting-libraries

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.