Defined as roughly : a %>.% b ~ { . <- a; b }; (with visible .-side effects).

pipe_left_arg %.>% pipe_right_arg

pipe_left_arg %>.% pipe_right_arg

pipe_left_arg %.% pipe_right_arg



left argument expression (substituted into .)


right argument expression (presumably including .)


eval({ . <- pipe_left_arg; pipe_right_arg };)


The pipe operator has a couple of special cases. First: if the right hand side is a name, then we try to de-reference it and apply it as a function or surrogate function.

The pipe operator checks for and throws an exception for a number of "piped into nothing cases" such as 5 %.>% sin(), many of these checks can be turned off by adding braces.

For some discussion, please see For some more examples, please see the package README For formal documentation please see For a base-R step-debuggable pipe please try the Bizarro Pipe %>.% and %.>% are synonyms.


  • %.>%: dot arrow

  • %>.%: alias for dot arrow

  • %.%: alias for dot arrow


# both should be equal: cos(exp(sin(4)))
#> [1] 0.8919465
4 %.>% sin(.) %.>% exp(.) %.>% cos(.)
#> [1] 0.8919465