我正在制作一个包,我想在其中定义一种新的绘图方法。我正在使用 roxygen 源内文档。这个问题似乎非常类似于: 如何使用 Roxygen 正确记录来自不同包的泛型的 S3 方法? 和 Roxygen2 - 如何正确记录 S3 方法 ,但我仍然无法让它工作。
给我带来麻烦的相关部分是:
#' Generic plot method
#'
#' @param x \dots
#' @param ... \dots
#' @export
plot <- function(x, ...) UseMethod("plot")
#' Default plot method
#'
#' @param x \dots
#' @param ... \dots
#' @importFrom graphics plot
#' @method plot default
#' @S3method plot default
plot.default <- function(x, ...) graphics::plot(x, ...)
#' Plotting function for ABI object
#'
#' Description.
#'
#' @param x ABI object as generated by newABI.
#' @param base Character. Bases to look at.
#' @param ... Other options passed to plot().
#' @return Nothing. Side-effect: plots graphs.
#' @method plot ABI
#' @S3method plot ABI
plot.ABI <- function(x, base, ...) {
#Overly simplified
plot(1, 1, main = base)
}
当我运行它并调查方法(绘图)时,没有为 ABI 对象定义方法。通过 ABI:::plot 访问函数(ABI 是包的名称)确实有效。使用 :: 不会。
在包构建检查期间,有一个警告:
* checking S3 generic/method consistency ... WARNING
plot:
function(x)
plot.ABI:
function(x, base, ...)
See section ‘Generic functions and methods’ of the ‘Writing R
Extensions’ manual.
似乎在争论中存在分歧。但我不明白这一点,因为泛型有参数 x 和......我的 ABI 方法也是如此(除了基础)。
所以有两个问题,我希望这源于同一个问题: plot.ABI 方法未导出,包检查引发警告。
我该如何解决这个问题?