我正在尝试创建 R 包的第一次尝试。我有下面的一些功能。
#' @export
overview <- function(x, ...) {
UseMethod("overview")
}
overview.query <- function(return.query, ...) {
Run Code Online (Sandbox Code Playgroud)
现在,当我使用devtools::load_all()(加载所有函数)时,一切正常,并overview.query在我传递class query.
但是重建,并且UseMethod无法再找到该overview.query功能(因此未加载所有功能),我做错了什么?
错误消息:没有适用于 'overview' 的方法应用于类“c('query', 'data.frame')”的对象
我认为只有向用户公开的@export函数才会被'ed,所有其他函数仍然对其他包函数在内部可见。
当您创建应用于 S3 对象的通用函数时,您需要导出语句UseMethod和函数本身,如下所示:
#' @export
overview <- function(x, ...) {
UseMethod("overview")
}
#' @export
overview.query <- function(return.query, ...) {
Run Code Online (Sandbox Code Playgroud)
这应该可以消除错误,因为该方法现在可供用户使用。
这适用于roxygen2版本 3+(当前版本为 5)。请参阅此答案以获取更多信息: