Since the introduction of the %>%
operator in the magrittr
package (and it's use in dplyr
), I have started to use this in my own work.
One simple operation has me stumped, however. Specifically, this is the extraction (or subsetting) of elements from a list.
An example: In base R I would use $
, [
or [[
to extract an element from a list:
iris$Species
iris[["Species"]]
I can achieve the same using the %>%
pipe:
iris %>%
subset(select = "Species") %>%
head
Species
1 setosa
2 setosa
3 setosa
4 setosa
5 setosa
6 setosa
Or
iris %>%
`[[`("Species") %>%
levels
[1] "setosa" "versicolor" "virginica"
However, this feels like a messy, clunky solution.
Is there a more elegant, canonical way to extract an element from a list using the %>%
pipe?
Note: I don't want any solution involving dplyr
, for the simple reason that I want the solution to work with any R object, including lists and matrices, not just data frames.