Проверка соответствия S3 общего / метода... ПРЕДУПРЕЖДЕНИЕ

Я уже прочитал следующие два обсуждения:
Roxygen2 - как правильно документировать методы S3
Предупреждение о согласованности метода S3 при сборке пакета R с Roxygen
И следующие два урока:
http://cran.r-project.org/doc/manuals/R-exts.html
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
}

После запуска 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.

Похож на параметр label исчезнуть, я попытался поменять позицию параметра log а также labelлюбой параметр после x исчезнет в очереди function(x, log, ...)так как это исправить?

1 ответ

Ты используешь plot() универсальная функция в качестве примера или это на самом деле ваш код?

Если последнее так, я думаю, что это потому, что plot() является базовой функцией R, которая принимает три аргумента: x, y и.... Чтобы позволить вашему собственному методу s3 пройти проверку, нет необходимости переопределять ваш собственный универсальный шаблон, а также ваш метод s3 должен будет следовать точно таким же аргументам с базовым универсальным R.

У меня была такая же проблема, когда я бегал R CMD check или devtools:check() в мой пакет с методом s3, он всегда выдает предупреждения из-за согласованности S3 generic/method.

Я также использую Roxygen2, и я попытался добавить @rdname перед @export к моей функции с помощью s3 generic, и у меня это сработало. Пожалуйста, попробуйте следующий код:

##---- You can remove this---###
#plot <- function(x, label=TRUE, log=TRUE,  ...){
#  UseMethod("plot")
#}
#######################################

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

вы можете удалить первую функцию (график с UseMethod('plot')).

Дайте мне знать, исчезло ли предупреждение.

Другие вопросы по тегам