web-dev-qa-db-ja.com

Rの%>%とはどういう意味ですか?

私はこの例に従います、server.Rファイルはこちら

私は似たようなフィルタをするつもりですが、%>%が何をするかということに関して迷っています。

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

中置演算子%>%は基数Rの一部ではありませんが、実際にはパッケージmagrittrCRAN )によって定義され、dplyrCRAN )によって頻繁に使用されます。 。

それはパイプのように機能するので、マグリットの有名な絵 The Treachery of Images への参照です。

関数がすることは、演算子の左側を演算子の右側の最初の引数に渡すことです。次の例では、データフレームirishead()に渡されます。

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)と同等です。

多くの場合、%>%は、関数を「連鎖」させるために複数回呼び出され、入れ子と同じ結果になります。たとえば、次のチェーンでは、irishead()に渡され、その結果がsummary()に渡されます。

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

したがってiris %>% head() %>% summary()summary(head(iris))と同等です。適用された関数は裏返しではなく左から右に読むことができるので、入れ子にすることを連鎖することを好む人もいます。

203
Andrie