Estoy ejecutando un ejemplo en R, siguiendo los pasos y todo está funcionando hasta ahora, excepto que este código produce un error:
words <- dtm %>%
as.matrix %>%
colnames %>%
(function(x) x[nchar(x) < 20])
Error: no se pudo encontrar la función "%>%"
No entiendo cuál es el beneficio de usar este operador especial
%>%
, y cualquier comentario sería genial.
Respuestas:
Primero debe cargar un paquete (como
magrittr
odplyr
) que defina la función, luego debería funcionar.install.packages("magrittr") # package installations are only needed the first time you use it install.packages("dplyr") # alternative installation of the %>% library(magrittr) # needs to be run every time you start R and want to use %>% library(dplyr) # alternatively, this also loads %>%
El operador de tubería
%>%
se presentó para "disminuir el tiempo de desarrollo y mejorar la legibilidad y el mantenimiento del código".Pero todos deben decidir por sí mismos si realmente se ajusta a su flujo de trabajo y facilita las cosas. Para obtener más información sobre
magrittr
, haga clic aquí. .Si no usa la tubería
%>%
, este código devolvería lo mismo que su código:words <- colnames(as.matrix(dtm)) words <- words[nchar(words) < 20] words
EDITAR: (Estoy ampliando mi respuesta debido a un comentario muy útil que hizo @Molx)
fuente
magrittr
, el operador de tubería se usa más comúnmente con el paquetedplyr
(que requiere y cargamagrittr
), por lo que siempre que vea a alguien usando,%>%
asegúrese de no cargar en sudplyr
lugar.library(tidyverse)
) podría no ser suficiente. He agregado (library(dplyr)
) despuéslibrary(tidyverse)
y luego%>%
se encontró.En Windows: si usa%>% dentro de un bucle% dopar%, debe agregar una referencia al paquete de carga
dplyr
(omagrittr
, que sedplyr
carga).Ejemplo:
plots <- foreach(myInput=iterators::iter(plotCount), .packages=c("RODBC", "dplyr")) %dopar% { return(getPlot(myInput)) }
Si omite el
.packages
comando y lo usa%do%
para que todo se ejecute en un solo proceso, entonces funciona bien. La razón es que todo se ejecuta en un proceso, por lo que no necesita cargar específicamente nuevos paquetes.fuente
foreach
.se puede utilizar lo siguiente:
install.packages("data.table") library(data.table)
fuente
could not find function "%>%"
El beneficio es que se utiliza la salida de la función anterior. No es necesario repetir el origen de la fuente de datos, por ejemplo.
fuente