管道是 R 中一种用于简化操作的方式,可以表示由多个操作组成的一个操作序列。管道是包含于 magrittr
包中的,但 tidyverse
包会自动加载管道符号 %>%
。因此加载了 tidyverse
包后并不需要再显式地加载 magrittr
包了。
管道作用
管道符号 %>%
的作用是将管道左侧的对象作为管道右侧函数的第一参数,并运行右侧的函数。并且可以在一个语句中使用多个管道符号。
对于以下两种情况,管道不能支持以下两类函数:
- 在函数
调用 时的当前环境创建对象的函数。即第一参数的环境由函数决定,且没有明确指定函数环境的函数 - 使用惰性求值的函数。即在调用前参数没有指定的函数
不适用管道的情形
- 操作步骤过长
- 有多个输入和输出
- 操作步骤间存在复杂的依赖关系
其他工具
- T 管道操作符:
%T>%
。表达式lhs %T>% rhs
会将lhs
作为返回值进行接下来的操作 - 解释管道操作符:
%$%
。表达式lhs %$% rhs
会额外将lhs
的列名(变量)传递给rhs
- 分配管道操作符:
%<>%
。表达式lhs %<>% rhs
会额外将rhs
的结果赋值给lhs