【问题标题】:Creating an RPackage - UseMethod can't find function创建 RPackage - UseMethod 找不到函数
【发布时间】:2015-08-13 12:55:28
【问题描述】:

我第一次尝试创建 R 包。我有一些函数如下。

#' @export
overview  <- function(x, ...) {
  UseMethod("overview")
} 

overview.query <- function(return.query, ...) {

现在,当我使用devtools::load_all()(它加载所有函数)时,一切正常,当我传递class query 的对象时,overview.query 被执行。

但是重建,UseMethod 再也找不到overview.query 函数(所有函数都没有加载),我做错了什么?

错误信息:没有适用于“c('query', 'data.frame')”类对象的“overview”方法

我认为只有要向用户公开的函数才能被@export'ed,所有其他函数在其他包函数内部仍然可见。

【问题讨论】:

标签: r


【解决方案1】:

当您创建一个通用函数以应用于 S3 对象时,您需要同时导出 UseMethod 语句和函数本身,如下所示:

#' @export
overview  <- function(x, ...) {
  UseMethod("overview")
} 
#' @export  
overview.query <- function(return.query, ...) {

这应该可以消除错误,因为该方法现在可供用户使用。

这适用于roxygen2 版本 3+(当前为 5)。有关更多信息,请参阅此答案:

How to properly document S3 methods

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-04
    • 2019-01-20
    • 1970-01-01
    • 2015-08-04
    • 2012-07-12
    • 1970-01-01
    • 2017-01-01
    • 2020-05-29
    相关资源
    最近更新 更多