The exposition pipe operator, %$%
, exposes the column names as R symbols within the left-hand side object to the right-hand side expression. This operator is handy when piping into functions that do not have a data
argument (unlike, say, lm
) and that don't take a data.frame and column names as arguments (most of the main dplyr functions).
The exposition pipe operator %$%
allows a user to avoid breaking a pipeline when needing to refer to column names. For instance, say you want to filter a data.frame and then run a correlation test on two columns with cor.test
:
library(magrittr)
library(dplyr)
mtcars %>%
filter(wt > 2) %$%
cor.test(hp, mpg)
#>
#> Pearson's product-moment correlation
#>
#> data: hp and mpg
#> t = -5.9546, df = 26, p-value = 2.768e-06
#> alternative hypothesis: true correlation is not equal to 0
#> 95 percent confidence interval:
#> -0.8825498 -0.5393217
#> sample estimates:
#> cor
#> -0.7595673
Here the standard %>%
pipe passes the data.frame through to filter()
, while the %$%
pipe exposes the column names to cor.test()
.
The exposition pipe works like a pipe-able version of the base R with()
functions, and the same left-hand side objects are accepted as inputs.