Подтвердить что ты не робот

Что означает%>% в R

Я следую этому примеру, файл server.R находится здесь,

https://github.com/wch/movies/blob/master/server.R

Я планирую сделать аналогичный фильтр, но я потерял то, что делает% > %.

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

Ответ 1

Инфиксный оператор %>% не является частью базы R, но на самом деле определяется пакетом magrittr (CRAN) и сильно используется на dplyr (CRAN).

Он работает как труба, поэтому ссылка на знаменитую живопись Магритта La trahison des images.

Что делает эта функция, так это передать LHS в первый аргумент RHS. В следующем примере кадр данных 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).

Часто %>% вызывается несколько раз для "цепных" функций вместе, что обеспечивает тот же результат, что и вложенность. Например, в цепочке ниже, iris передается в head(), тогда результат этого передается на summary().

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

Таким образом, iris %>% head() %>% summary() эквивалентно summary(head(iris)). Некоторые люди предпочитают привязку к вложенности, потому что применяемые функции можно читать слева направо, а не изнутри.