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)
最简单的方法是加载magrittr包,它只是管道,并且是原始的来源%>%.如果您不想加载任何包,您仍然可以使用%>%,但不能以任何真正有用的方式使用(除非您在Andrie建议的环境中定义它).使用它::会像这样:
# standard use
mtcars %>% summary()
# :: use
magrittr::"%>%"(mtcars, summary())
Run Code Online (Sandbox Code Playgroud)
你真的失去了使用这种方法可读性/不嵌套的任何优点.
既然你说你正在构建一个包,你应该magrittr输入Imports,或者甚至只是我们importFrom并获取该"%>%"功能.有关详细信息,请参见此处