It works like a pipe, hence the reference to Magritte’s famous painting The Treachery of Images.
What the function does is to pass the left hand side of the operator to the first argument of the right hand side of the operator. In the following example, the data frame
iris gets passed to
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() is equivalent to
%>% is called multiple times to “chain” functions together, which accomplishes the same result as nesting. For example in the chain below,
iris is passed to
head(), then the result of that is passed to
iris %>% head() %>% summary()
iris %>% head() %>% summary() is equivalent to
summary(head(iris)). Some people prefer chaining to nesting because the functions applied can be read from left to right rather than from inside out.