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
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
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.