%.% (dplyr) 和 %>% (magrittr) 之间的差异
Posted
技术标签:
【中文标题】%.% (dplyr) 和 %>% (magrittr) 之间的差异【英文标题】:Differences between %.% (dplyr) and %>% (magrittr) 【发布时间】:2014-06-30 12:49:34 【问题描述】:dplyr
包引入了%.%
运算符来将左侧作为右侧函数的参数传递,类似于 *NIX 管道。 magrittr
包是一个更轻量级的包,它的存在仅用于定义类似管道的运算符。
还有一个使用%.%
,另一个使用%>%
。
这两者有什么区别吗?即使在dplyr
代码中我也可以只使用%>%
,否则会导致细微的错误吗?
在检查代码时,它们在早期采用了非常不同的路径,因此简单的眼球比较会表明它们是不同的。当我在网上搜索它们时,我找不到任何文档记录,也没有在文档本身中遇到任何内容。
【问题讨论】:
更新:隐藏在 cmets 中的可能答案:blog.rstudio.org/2014/01/17/introducing-dplyr 【参考方案1】:查看当前NEWS 文件中的第一项:
dplyr 现在从 magrittr (#330) 导入
%>%
。我建议您使用 这个而不是%.%
,因为它更容易输入(因为你可以持有 下shift键),更灵活
【讨论】:
但现在我可以看到此信息并且(也许?)不会招致 rtfm“惩罚”? SOF 是一种更好的模糊搜索工具(“我什至不知道该概念的确切术语是什么......”)文档搜索 我会说这应该是新接受的答案,因为此时另一个答案或多或少已经过时了。【参考方案2】:dplyr 现在从 magrittr 导入 %>%
并默认使用它。详情请见this answer。
差异包括
您可以使用.
作为左侧的占位符,例如
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
【讨论】:
以上是关于%.% (dplyr) 和 %>% (magrittr) 之间的差异的主要内容,如果未能解决你的问题,请参考以下文章