He visto el uso de la función %>%(porcentaje mayor que porcentaje) en algunos paquetes como dplyr y rvest . Qué significa eso? ¿Es una forma de escribir bloques de cierre en R?
¡Gracias David! jbaums, desafortunadamente no hay ningún documento sobre esto. ? '%>%' devuelve "No hay documentación para '%>%' en paquetes y bibliotecas especificados"
alfakini
6
@alf. necesita library(magrittr)o library(dplyr)primero y luego ejecutar ?'%>%', aunque mi enlace proporciona más información
%>%no tiene un significado incorporado, pero el usuario (o un paquete) es libre de definir los operadores del formulario de la forma que %whatever%desee. Por ejemplo, esta función devolverá una cadena que consta de su argumento izquierdo seguido de una coma y un espacio y luego su argumento derecho.
"%,%"<-function(x, y) paste0(x,", ", y)# test run"Hello"%,%"World"## [1] "Hello, World"
La base de R proporciona %*%(multiplicación de matriz), %/%(división de números enteros), %in%(¿es lhs un componente del rhs?), %o%(Producto externo) y %x%(producto de kronecker). No está claro si %%cae en esta categoría o no, pero representa módulo.
expm El paquete R, expm, define un operador de potencia matricial %^%. Véase un ejemplo en el poder de la matriz en I .
magittr también ha definido una serie de otros operadores similares. Ver la sección adicional Operadores Pipe del enlace anterior, que analiza %T>%, %<>%y %$%y http://cran.r-project.org/web/packages/magrittr/magrittr.pdf incluso para más detalles.
dplyr El paquete dplyr R utilizado para definir un %.%operador que es similar; sin embargo, ha quedado obsoleto y ahora dplyr recomienda que los usuarios utilicen el %>%que dplyr importa de magrittr y lo pone a disposición del usuario de dplyr. Como ha mencionado David Arenburg en los comentarios, esta pregunta SO discute las diferencias entre ella y la de magrittr %>%: Diferencias entre%.% (Dplyr) y%>% (magrittr)
pipeR El paquete R, pipeR, define un %>>%operador que es similar al%>% de magrittr y se puede usar como una alternativa. Ver http://renkun.me/pipeR-tutorial/
postlogic El paquete postlogic definido %if%y %unless%operadores.
wrapr El paquete R, wrapr, define un dot pipe %.>%que es una versión explícita de %>%en el sentido de que no hace una inserción implícita de argumentos, sino que solo sustituye los usos explícitos de dot en el lado derecho. Esto puede considerarse como otra alternativa a %>%. Ver https://winvector.github.io/wrapr/articles/dot_pipe.html
uno escribe lo siguiente. En este caso usamos explícitamente punto en lugar de elidir el argumento de punto y terminamos cada componente de la canalización con una asignación a la variable cuyo nombre es punto ( .). Seguimos eso con un punto y coma.
1:8->.; sum(.)->.; sqrt(.)## [1] 6
Actualización Información agregada sobre el paquete expm y ejemplo simplificado en la parte superior. Paquete postlogic agregado.
Desde dentro de R después de cargar magrittr, obtenga ayuda para usar:, ?"%<>%"etc.
G. Grothendieck
17
Mi entendimiento después de leer el enlace ofrecido por G.Grothendieck es que%>% es un operador que canaliza funciones. Esto ayuda a la legibilidad y la productividad, ya que es más fácil seguir el flujo de múltiples funciones a través de estas tuberías que retroceder cuando se anidan múltiples funciones.
?'%>%'
library(magrittr)
olibrary(dplyr)
primero y luego ejecutar?'%>%'
, aunque mi enlace proporciona más informaciónRespuestas:
% ...% operadores
%>%
no tiene un significado incorporado, pero el usuario (o un paquete) es libre de definir los operadores del formulario de la forma que%whatever%
desee. Por ejemplo, esta función devolverá una cadena que consta de su argumento izquierdo seguido de una coma y un espacio y luego su argumento derecho.La base de R proporciona
%*%
(multiplicación de matriz),%/%
(división de números enteros),%in%
(¿es lhs un componente del rhs?),%o%
(Producto externo) y%x%
(producto de kronecker). No está claro si%%
cae en esta categoría o no, pero representa módulo.expm El paquete R, expm, define un operador de potencia matricial
%^%
. Véase un ejemplo en el poder de la matriz en I .operadores El paquete R de operadores ha definido un gran número de operadores tales como
%!in%
(for not%in%
). Ver http://cran.r-project.org/web/packages/operators/operators.pdfTubería
magrittr En el caso del
%>%
paquete magrittr R lo ha definido como se discutió en la viñeta magrittr. Ver http://cran.r-project.org/web/packages/magrittr/vignettes/magrittr.htmlmagittr también ha definido una serie de otros operadores similares. Ver la sección adicional Operadores Pipe del enlace anterior, que analiza
%T>%
,%<>%
y%$%
y http://cran.r-project.org/web/packages/magrittr/magrittr.pdf incluso para más detalles.dplyr El paquete dplyr R utilizado para definir un
%.%
operador que es similar; sin embargo, ha quedado obsoleto y ahora dplyr recomienda que los usuarios utilicen el%>%
que dplyr importa de magrittr y lo pone a disposición del usuario de dplyr. Como ha mencionado David Arenburg en los comentarios, esta pregunta SO discute las diferencias entre ella y la de magrittr%>%
: Diferencias entre%.% (Dplyr) y%>% (magrittr)pipeR El paquete R, pipeR, define un
%>>%
operador que es similar al%>% de magrittr y se puede usar como una alternativa. Ver http://renkun.me/pipeR-tutorial/El paquete pipeR también ha definido otros operadores similares. Ver: http://cran.r-project.org/web/packages/pipeR/pipeR.pdf
postlogic El paquete postlogic definido
%if%
y%unless%
operadores.wrapr El paquete R, wrapr, define un dot pipe
%.>%
que es una versión explícita de%>%
en el sentido de que no hace una inserción implícita de argumentos, sino que solo sustituye los usos explícitos de dot en el lado derecho. Esto puede considerarse como otra alternativa a%>%
. Ver https://winvector.github.io/wrapr/articles/dot_pipe.htmlPipa bizarro . Esto no es realmente una tubería, sino más bien una sintaxis básica inteligente para trabajar de una manera similar a las tuberías sin usar realmente las tuberías. Se discute en http://www.win-vector.com/blog/2017/01/using-the-bizarro-pipe-to-debug-magrittr-pipelines-in-r/ La idea es que en lugar de escribir:
uno escribe lo siguiente. En este caso usamos explícitamente punto en lugar de elidir el argumento de punto y terminamos cada componente de la canalización con una asignación a la variable cuyo nombre es punto (
.
). Seguimos eso con un punto y coma.Actualización Información agregada sobre el paquete expm y ejemplo simplificado en la parte superior. Paquete postlogic agregado.
fuente
?"%<>%"
etc.Mi entendimiento después de leer el enlace ofrecido por G.Grothendieck es que%>% es un operador que canaliza funciones. Esto ayuda a la legibilidad y la productividad, ya que es más fácil seguir el flujo de múltiples funciones a través de estas tuberías que retroceder cuando se anidan múltiples funciones.
fuente
%>%
es similar a pipe en Unix. Por ejemplo, enla salida de
combined_data_set
entrarágroup_by
y su salida entrarátally
, luego se asignará la salida final aa
.Esto le brinda una forma práctica y fácil de usar funciones en serie sin crear variables ni almacenar valores intermedios.
fuente
Los paquetes R dplyr y sf importan el operador%>% del paquete R magrittr.
Hay ayuda disponible mediante el siguiente comando:
Por supuesto, el paquete debe cargarse antes utilizando, por ejemplo,
La documentación del operador magrittr forward-pipe da un buen ejemplo: cuando las funciones requieren solo un argumento, x%>% f es equivalente af (x)
fuente