operator not magritte for could r magrittr

not - magritte



¿Cómo extraer/subcontratar un elemento de una lista con magrittr%>% pipe? (2)

En v 1.5 de magrittr en CRAN puede usar el operador %$% :

iris %$% Species %>% levels

Es esencialmente una envoltura alrededor, pero más agradable que

iris %>% with(Species %>% levels)

o

iris %>% with(Species) %>% levels

Está diseñado para ser conveniente cuando las funciones no tienen su propio argumento de datos, por ejemplo, con un gráfico que puede hacer

iris %>% plot(Sepal.Length ~ Sepal.Width, data = .)

pero, por ejemplo, con ts.plot no puedes hacer eso, así que ahora:

iris %$% ts.plot(Sepal.Length)

[Sí, sé que el ejemplo no tiene sentido, pero ilustra el punto]

Tenga en cuenta también que [<- y [[<- también tienen alias, inset y inset2 ..

Desde la introducción del operador %>% en el paquete magrittr (y su uso en dplyr ), comencé a usar esto en mi propio trabajo.

Sin embargo, una simple operación me ha dejado perplejo. Específicamente, esta es la extracción (o subconjunto) de elementos de una lista.

Un ejemplo: en la base RI usaría $ , [ o [[ para extraer un elemento de una lista:

iris$Species iris[["Species"]]

Puedo lograr lo mismo usando el %>% pipe:

iris %>% subset(select = "Species") %>% head Species 1 setosa 2 setosa 3 setosa 4 setosa 5 setosa 6 setosa

O

iris %>% `[[`("Species") %>% levels [1] "setosa" "versicolor" "virginica"

Sin embargo, esto se siente como una solución desordenada y torpe.

¿Existe una forma más elegante y canónica de extraer un elemento de una lista utilizando el tubo %>% ?

Nota: no quiero ninguna solución que incluya dplyr , por la sencilla razón de que quiero que la solución funcione con cualquier objeto R, incluidas listas y matrices, no solo marcos de datos.


Use use_series , extract2 y extract para $ , [[ , [ , respectivamente.

?extract

magrittr proporciona una serie de alias que pueden ser más agradables de usar cuando se componen cadenas utilizando el operador %>% ".

Por tu ejemplo, podrías probar

iris %>% extract("Species")

y

iris %>% extract2("Species") %>% levels

Consulte la parte inferior de esta página para obtener más información: http://cran.r-project.org/web/packages/magrittr/vignettes/magrittr.html