免责声明:我在编写此问题时找到了解决该问题的方法。但是我现在的问题是“它如何工作?”
我正在尝试从一个包(例如pkg.from)导出S3方法并将其导入另一个包(例如pkg.to)。要导出该方法,请使用roxygen2注释。
#' @export
myclass <- function() {
structure(NULL, class = 'myclass')
}
#' @export
print.myclass <- function(x, ...) {
print('NULL with class myclass')
}
Run Code Online (Sandbox Code Playgroud)
文件NAMESPACE现在同时包含构造函数和方法。
S3method(print,myclass)
export(myclass)
Run Code Online (Sandbox Code Playgroud)
我相信这意味着它们都是出口的。这支持在装入程序包后可以同时调用这两个事实。
library(pkg.from)
methods(print)
# ...
# [130] print.myclass*
# ...
print(myclass())
# [1] "NULL with class myclass"
Run Code Online (Sandbox Code Playgroud)
问题是当我想将此方法导入到其他包中时roxygen2。
#' @importFrom pkg.from print.myclass
Run Code Online (Sandbox Code Playgroud)
在Build此消息发生期间:
Error : object 'print.myclass' is not exported by 'namespace:pkg.from'
ERROR: lazy loading failed for package 'pkg.to'
Run Code Online (Sandbox Code Playgroud)
如果我不导入print.myclass,即使我没有pkg.from加载包也可以。Hadley Wickham写道: “您不需要为S3方法做任何特殊的事情”。但是我不认为导入函数“有什么特别的”。现在我有更多的问题,而开始写这个问题的时间比以前多。
| 归档时间: |
|
| 查看次数: |
482 次 |
| 最近记录: |