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