Что означает%>% в R
Я следую этому примеру, файл server.R находится здесь.
Я планирую сделать подобный фильтр, но теряюсь относительно того, что %>%
делает.
# Apply filters
m <- all_movies %>%
filter(
Reviews >= reviews,
Oscars >= oscars,
Year >= minyear,
Year <= maxyear,
BoxOffice >= minboxoffice,
BoxOffice <= maxboxoffice
) %>%
arrange(Oscars)
1 ответ
Инфиксный оператор %>%
не является частью базы R, но фактически определяется пакетом magrittr
( CRAN) и активно используется dplyr
( 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)
,
Часто, %>%
вызывается несколько раз для объединения функций в цепочку, что приводит к тому же результату, что и вложение. Например, в цепочке ниже, iris
передается head()
то результат этого передается summary()
,
iris %>% head() %>% summary()
таким образом iris %>% head() %>% summary()
эквивалентно summary(head(iris))
, Некоторые люди предпочитают цепочку вложения, потому что примененные функции можно читать слева направо, а не изнутри.