Что означает%>% в 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)), Некоторые люди предпочитают цепочку вложения, потому что примененные функции можно читать слева направо, а не изнутри.

Другие вопросы по тегам