dplyr
包引入了%.%
操作符,将左侧作为右侧函数的参数传递,类似于*NIX管道。而magrittr
包是一个更轻量级的包,仅用于定义类似管道的操作符。
但是它们使用的操作符不同,一个是%.%
,另一个是%>%
。
它们之间有区别吗?我能否在dplyr
代码中只使用%>%
,还是会导致微妙的错误?
检查代码后发现,它们在早期阶段就采用了非常不同的路径,因此简单的肉眼比较会表明它们是不同的。我没有在网上搜索到任何详细信息,文档本身也没有提到过这些内容。dplyr
包引入了%.%
操作符,将左侧作为右侧函数的参数传递,类似于*NIX管道。而magrittr
包是一个更轻量级的包,仅用于定义类似管道的操作符。
但是它们使用的操作符不同,一个是%.%
,另一个是%>%
。
它们之间有区别吗?我能否在dplyr
代码中只使用%>%
,还是会导致微妙的错误?
检查代码后发现,它们在早期阶段就采用了非常不同的路径,因此简单的肉眼比较会表明它们是不同的。我没有在网上搜索到任何详细信息,文档本身也没有提到过这些内容。请查看当前 NEWS 文件中的第一条目:
dplyr 现在从 magrittr 中导入了
%>%
(#330)。我建议您使用这个操作符,而不是%.%
,因为它更易于键入(因为您可以按住 shift 键),并且更灵活。
dplyr 现在默认导入 magrittr 的 %>%
并使用它。有关详细信息,请参见此答案。
不同之处包括:
你可以使用 .
作为左侧的占位符,例如:
iris %>% plot(Sepal.Length ~ Sepal.Width, data = .)
%>%
尊重(rhs)
,例如:
1:10 %>% (call("sum"))
1:10 %>% (function(x) x^2 + 2*x)
为了更好地举例说明,请参见
https://gist.github.com/anonymous/0c69b019d0b4f6ae5050
对于单参数函数调用,您可以省略括号:
"2014-05-18" %>% as.Date