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