21

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

然而一个用途%.%和另一个%>%

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

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

4

2 回答 2

34

查看当前NEWS文件中的第一项:

dplyr 现在%>%从 magrittr (#330) 导入。我建议您使用它而不是%.%因为它更容易键入(因为您可以按住 shift 键)并且更灵活

于 2014-05-13T00:58:18.407 回答
16

dplyr 现在%>%从 magrittr 导入并默认使用它。有关详细信息,请参阅此答案


差异包括

  • 您可以使用 a.作为左侧的占位符,例如

     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
    
于 2014-05-18T14:58:27.633 回答