在一个包中,我有一个foo
返回类对象的函数"foo"
。我也有一个plot
class 的方法"foo"
。
#' Create a "foo" object
#'
#' @param x An \R object.
#'
#' @return
#' A "foo" object.
#'
#' @examples
#' foo_object <- foo(1)
#' plot.foo(foo_object)
#'
#' @export
foo <- function(x) {
structure(x, class = "foo")
}
#' @export
#' @importFrom graphics plot
plot.foo <- function(x, ...) {
class(x) <- setdiff(class(x), "foo")
plot(x)
invisible(NULL)
}
在使用devtools::load_all
. 然而,devtools::check
抱怨:
Error in plot.foo(foo_out) : could not find function "plot.foo"
Execution halted
似乎我的 R 会话知道plot.foo
,但不知道devtools::check
。到底是怎么回事?
编辑:为了澄清,当devtools::check
我plot.foo(foo_object)
用@examples
. plot(foo_object)
这并不让我感到惊讶,无论如何用户都应该调用泛型。我的问题仍然存在:为什么devtools::check
无法找到plot.foo
,因为我已经使用了@export
标签并S3method(plot, foo)
出现在NAMESPACE
after devtools::document
?