检查 S3 通用/方法一致性......警告

Dav*_*Lee 5 r object r-s3 roxygen2

我已经阅读了以下两个讨论:
Roxygen2 - 如何在
使用 Roxygen 构建 R 包时正确记录 S3 方法S3 方法一致性警告
以及以下两个教程:
http : //cran.r-project.org/doc/manuals/R-exts .html#Generic-functions-and-methods
http://adv-r.had.co.nz/S3.html
但我的问题仍然没有解决。以下是详细信息:
我想在一个包中定义一个 S3 的 plot() 泛型方法,我的代码是:

#' description
#'
#' more details
#'
#' @param x "test" object
#' @param label parameter one
#' @param log parameter two
#' @param ... graphical parameters to plot
#'
#' @examples
#' plot(a)
#'
#' @export
plot <- function(x, label=TRUE, log=TRUE,  ...){
  UseMethod("plot")
}

#' @export
plot.test <- function(x, label=TRUE, log=TRUE, ...){
# some code
}
Run Code Online (Sandbox Code Playgroud)

运行后devtools::check(),我会收到以下警告:

checking S3 generic/method consistency ... WARNING
plot:
  function(x, log, ...)
plot.test:
  function(x, label, log, ...)

See section ‘Generic functions and methods’ in the ‘Writing R
Extensions’ manual.
Run Code Online (Sandbox Code Playgroud)

看起来参数label消失了,我尝试交换参数log和的位置,label之后的任何参数x都会消失function(x, log, ...),那么如何解决这个问题?

fhl*_*ood 2

您是否使用plot()通用函数作为示例,或者它实际上是您的代码?

如果是后者,我认为这是因为plot()是一个基 R 函数,它需要三个参数: x、y 和 ... 。为了让您自己的 s3 方法通过检查,无需重新定义您自己的泛型,而且您的 s3 方法必须遵循与基本 R 泛型完全相同的参数。