dplyr: “Error en n (): la función no debe invocarse directamente”

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 en n (): esta función no debe invocarse directamente

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.

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()) 

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)) 

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 #    # 1 1 1 1 # 2 2 2 4 # 3 3 3 9 

Se enfrentó a un problema similar al ejecutar el código según el blog mencionado y luego ejecutar la solución en detach (“paquete: plyr”, descargar = 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 ) 

Publicación de ejecución de separación, cuando el código anterior se volvió a ejecutar funcionó bien, aunque recibió un mensaje de advertencia como se muestra a continuación, no estoy seguro de si plyr se descargó o no. ¿Y cómo se ejecuta correctamente el código?

Mensaje de advertencia: el espacio de nombres ‘plyr’ no se puede descargar: el espacio de nombres ‘plyr’ se importa mediante ‘reshape2’, ‘scales’, ‘broom’, ‘ggplot2’, por lo que no se puede descargar