ale*_*eth 88 namespaces r magrittr
我想在我自己编写%>%
的magrittr
包中使用包中引入的管道运算符来链接dplyr
数据转换.magrittr
列Import
在DESCRIPTION
文件中.加载我自己的包并测试使用管道操作符的函数后,我收到以下错误消息:
functionname中的错误(参数,:找不到函数"%>%"
更改%>%
为magrittr::%>%
函数源代码也无济于事,因为无法再构建包.
ton*_*nov 90
如果您已经magrittr
列出,它应该可以正常工作Depends
.但是,不建议这样做.取而代之的是,你离开magrittr
的Imports
和下面的行添加到NAMESPACE
:
importFrom(magrittr,"%>%")
Run Code Online (Sandbox Code Playgroud)
我建议阅读写作R扩展.您的问题在第1.1.3和1.5.1段中有所涉及.
Mik*_*ley 30
一个额外的解决方案 - 使用roxygen
包.它是作为devtools
包的一部分实现的.一旦devtools
安装,呼叫devtools::document()
将为您更新NAMESPACE
.它还使用文档自动构建.Rd文件,这很方便.
您所要做的就是将格式的特殊注释添加#' @import packagename
到文件中以从该包导入所有函数,或者#' @importFrom packagename functionname
导入函数.您可以在文件中包含任意数量的这些注释,因此您可以在每个文件的顶部或每个需要外部函数的函数中放置一组注释.
然后运行devtools::document()
并解析代码以查找这些注释,然后NAMESPACE
为您创建适当的文件.简单.
And*_*ēza 18
现在有一种更简单的方法来支持包中的管道.精彩的包装usethis
有这个功能use_pipe()
.你运行该功能一次,它处理一切.这是文档中use_pipe()
描述函数的方式usethis
:
是否需要在包内部使用magrittr的管道并为包的用户重新导出它:
将magrittr添加到DESCRIPTION中的"Imports"
使用必要的roxygen模板创建R/utils-pipe.R
Jub*_*les 15
假设你正在使用RStudio,Hadley的devtools
软件包,并magrittr
在DESCRIPTION
文件的Imports部分列出,这里是我%>%
在我的软件包函数中使用的步骤.
一,写函数foo.R
:
#' Convert \code{data.frame} to \code{list}.
#'
#' @importFrom magrittr %>%
#' @name %>%
#' @rdname pipe
#' @export
#' @param x A \code{data.frame} object.
#' @examples
#' my_result <- foo(iris)
#'
foo <- function(x) {
x %>%
as.list()
}
Run Code Online (Sandbox Code Playgroud)
第二,跑devtools::document()
.
第三,跑devtools::load_all()
.
类似的文件这会在你创建R/
的目录,并按照预期的功能应该工作.
归档时间: |
|
查看次数: |
12118 次 |
最近记录: |