R中%>%的含义是什么

时间:2014-07-02 16:15:34

标签: r magrittr

我正在关注此示例, server.R file is here

我打算做一个类似的过滤器,但我对%>%做了什么感到迷茫。

 # Apply filters
    m <- all_movies %>%
      filter(
        Reviews >= reviews,
        Oscars >= oscars,
        Year >= minyear,
        Year <= maxyear,
        BoxOffice >= minboxoffice,
        BoxOffice <= maxboxoffice
      ) %>%
      arrange(Oscars)

1 个答案:

答案 0 :(得分:198)

中缀运算符%>%不是基础R的一部分,但实际上是由包magrittrCRAN)定义的,并且dplyr({1}}大量使用{3}})。

它像管道一样工作,因此引用了马格利特的着名画作CRAN

该函数的作用是将运算符的左侧传递给运算符右侧的第一个参数。在以下示例中,数据框iris将传递给head()

library(magrittr)
iris %>% head()
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

因此,iris %>% head()相当于head(iris)

通常,%>%被多次调用到&#34;链&#34;功能在一起,完成与嵌套相同的结果。例如,在下面的链中,iris会传递给head(),然后将结果传递给summary()

iris %>% head() %>% summary()

因此iris %>% head() %>% summary()相当于summary(head(iris))。有些人喜欢链接到嵌套,因为应用的函数可以从左到右而不是从里到外读取。