在一个包中,我有一个foo返回类对象的函数"foo"。我也有一个plotclass 的方法"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)出现在NAMESPACEafter devtools::document?