在dplyr中使用%>%运算符而不在R中加载dplyr

Ale*_* Y. 17 r operators dplyr

我正在构建一个包,我想知道是否有办法%>%从dplyr 调用操作符而不实际附加dplyr包.例如,对于从包中导出的任何函数,可以使用双冒号(::)调用它.因此,如果我想在group_by不附加dplyr的情况下使用该功能,我会输入dplyr::group_by.运营商有类似的东西吗?

And*_*rie 26

您可以通过用反引号括起来引用具有非标准名称的任何对象.这意味着你可以这样做:

`%>%` <- magrittr::`%>%`
Run Code Online (Sandbox Code Playgroud)

这将定义%>%当前环境中的运算符.例如:

iris %>% head

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
Run Code Online (Sandbox Code Playgroud)


Gre*_*gor 9

最简单的方法是加载magrittr包,它只是管道,并且是原始的来源%>%.如果您不想加载任何包,您仍然可以使用%>%,但不能以任何真正有用的方式使用(除非您在Andrie建议的环境中定义它).使用它::会像这样:

# standard use
mtcars %>% summary()
# :: use
magrittr::"%>%"(mtcars, summary())
Run Code Online (Sandbox Code Playgroud)

你真的失去了使用这种方法可读性/不嵌套的任何优点.

既然你说你正在构建一个包,你应该magrittr输入Imports,或者甚至只是我们importFrom并获取该"%>%"功能.有关详细信息,请参见此处