%.% (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) 之间的差异的主要内容,如果未能解决你的问题,请参考以下文章

微星 MAG245R2评测

vue中简单的小插曲

R中的标准评估和非标准评估

在着色器中访问时,OpenGL 如何决定使用 MAG_FILTER 和 MIN_Filter?

使用dplyr计数和分组

dplyr:为什么个人计数摘要和索引摘要有所不同