【问题标题】:Differences between %.% (dplyr) and %>% (magrittr)%.% (dplyr) 和 %>% (magrittr) 之间的差异
【发布时间】:2014-06-30 12:49:34
【问题描述】:

dplyr 包引入了%.% 运算符来将左侧作为右侧函数的参数传递,类似于 *NIX 管道。 magrittr 包是一个更轻量级的包,它的存在仅用于定义类似管道的运算符。

还有一个使用%.%,另一个使用%>%

这两者有什么区别吗?我可以只在dplyr 代码中使用%>%,还是会导致细微的错误?

在检查代码时,它们在早期采用了非常不同的路径,因此简单的眼球比较会表明它们是不同的。当我在网上搜索它们时,我找不到任何文档记录,也没有在文档本身中遇到任何内容。

【问题讨论】:

标签: r pipe dplyr magrittr


【解决方案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
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-06
    • 2014-11-05
    • 2020-07-24
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 2016-08-12
    相关资源
    最近更新 更多