检查期间未找到导出的S3方法

问题描述

编辑:下面的所有内容都经过了严格的编辑,因为正如@ user2554330和@MrFlick指出的那样,由于我最初提供的伪代码无法重现我的问题,所以。



我有一个函数foo(),该函数创建类foo的对象。它与plot()泛型方法一起记录。

#' Create a foo object
#'
#' @param x A numeric vector.
#' 
#' @return
#' A foo object.
#'
#' @examples
#' foo_object <- foo(1:10)
#' plot.foo(foo_object)
#'
#' @export
foo <- function(x) {
  structure(x,class = c("foo","numeric"))
}

#' Methods for class foo
#' 
#' @param x A foo object.
#' @param ... Unused optional arguments.
#'
#' @name foo-methods
NULL

#' @rdname foo-methods
#' @export
#' @importFrom graphics plot
plot.foo <- function(x,...) {
  class(x) <- setdiff(class(x),"foo")
  plot(x)
  invisible(NULL)
}

该示例在加载了包的R会话中运行没有问题,但是devtools::check()仍然抱怨:

Error in plot.foo(foo_out) : could not find function "plot.foo"
  Execution halted

似乎知道plot.foo()存在,但不知道其定义。发生了什么事?


编辑:将devtools::check()中的plot.foo(foo_object)替换为@examples后,plot(foo_object)运行没有错误。一切都很好,因为用户无论如何都应该调用泛型,但是问题仍然存在:鉴于该方法已导出并且S3method(plot,foo)出现在NAMESPACE中,为什么找不到该方法?>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)