How to extract / subset an element from a list with the magrittr %>% pipe?

徘徊边缘 提交于 2019-11-30 04:28:05

In v 1.5 of magrittr on CRAN you can use the %$% operator:

iris %$% 
  Species %>%
  levels

It is essentially a wrapper around with but nicer than

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

or

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

It is designed to be convinient when functions don't have their own data argument, e.g. with plot you can do

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

but e.g. with ts.plot you can't do that, so now:

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

[yeah, I know the example makes no sense, but it illustrates the point]

Note also that [<- and [[<- also have aliases, inset and inset2..

Bangyou

Use use_series, extract2 and extract for $, [[, [, respectively.

?extract

magrittr provides a series of aliases which can be more pleasant to use when composing chains using the %>% operator."

For your example, you could try

iris %>%
  extract("Species")

and

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

See the bottom of this page for more: http://cran.r-project.org/web/packages/magrittr/vignettes/magrittr.html

A more recent tidyverse solution: pluck() from purrr (since 0.2.3) extracts a named element from a list (or a named column from a data frame):

library(tidyverse)

iris %>% 
  pluck("Species")

Note: to access the element by index number, you can also use first(), last() or nth() from dplyr on any object (list, data frame, matrix) to extract its first, last or nth element:

iris %>% 
  as.list() %>%  # unnecessary, just to show it works on lists too
  last()         # or nth(5) in this case, to get Species
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!