如何从另一个包导入R函数,以便它可供用户使用?

mpi*_*tas 9 packages r devtools

我正在写一个R包,我想forecast从包预测中导入泛型函数.我的包提供了方法forecast.myobj.我有 forecast在Imports:包中的DESCRIPTION文件和我的函数定义如下:

##' @export
forecast.myobj <- function(x) {

}
Run Code Online (Sandbox Code Playgroud)

我正在使用devtools 包(版本1.5)来构建包.生成的NAMESPACE具有以下内容

S3method(forecast, myobj)
importFrom(forecast, forecast)
Run Code Online (Sandbox Code Playgroud)

但是,当我在干净的R会话中加载我的包时,函数forecast不可用.但有趣的是,我可以看到的帮助页面forecast,并forecast.myobj和我可以通过访问这些功能forecast::forecast和mypackage:::forecast.myobj.是否有可能forecast在不依赖包装的情况下向用户提供forecast?我检查了文档,并在这里回顾了一堆类似的问题,但我没有找到明确的否定或肯定的答案.

G. *_*eck 10

导入的函数必须在NAMESPACE文件中导出才能供用户使用:

S3method(forecat, myobj)
importFrom(forecast, forecast)
export(forecast)
Run Code Online (Sandbox Code Playgroud)

例如,请参阅dplyr软件包的NAMESPACE文件,该文件%>%从magrittr软件包导入并导出它,以便用户可以访问它.


mpi*_*tas 6

给我自己的答案添加如何实现NAMESPACE@G中描述的信息.Grothendieck使用devtools包的答案.以下几行(以dplyr的代码为模型)可以解决问题

##' @importFrom forecast forecast
##' @name forecast
##' @rdname forecast.myobj
##' @export
NULL
Run Code Online (Sandbox Code Playgroud)