【问题标题】:What does %>% mean in R [duplicate]%>%在R中是什么意思[重复]
【发布时间】:2014-08-23 12:59:53
【问题描述】:

我按照这个例子,server.Rfile is here.

我打算做一个类似的过滤器,但不知道 %>% 做了什么。

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

【问题讨论】:

标签: r magrittr


【解决方案1】:

中缀运算符%&gt;% 不是基本R 的一部分,但实际上由包magrittr (CRAN) 定义,并被dplyr (CRAN) 大量使用。

它的作用就像一个管道,因此引用了马格利特的名画The Treachery of Images

函数所做的是将运算符的左侧传递给运算符右侧的第一个参数。在以下示例中,数据框 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 %&gt;% head() 等价于 head(iris)

通常,%&gt;% 被多次调用以将函数“链接”在一起,从而实现与嵌套相同的结果。例如在下面的链中,iris 被传递给head(),然后其结果被传递给summary()

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

因此iris %&gt;% head() %&gt;% summary() 等价于summary(head(iris))。有些人更喜欢链接而不是嵌套,因为应用的函数可以从左到右而不是从内向外读取。

【讨论】:

  • 我们可以用 unix 覆盖这个 %>% 运算符吗?在 R 中?
  • 我想你可以,但它可能会干扰使用 | “或”的运算符,有时需要。
  • 也许是一个愚蠢的问题,但我很好奇%&gt;% 如何引用图像的背叛而不是被称为管道?管道运算符在 bash 脚本中是众所周知的,所以我认为这就是它所引用的?
  • @NullSalad The Treachery of Images 在包装说明中被简单引用,显然只是文字游戏,请参见此处:cran.r-project.org/web/packages/magrittr/index.html
猜你喜欢
  • 2014-05-16
  • 2020-04-01
  • 2023-04-10
  • 2020-04-22
  • 1970-01-01
  • 2013-11-02
  • 2020-10-27
  • 2015-07-15
  • 2018-07-17
相关资源
最近更新 更多