Проверка соответствия 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')).
Дайте мне знать, исчезло ли предупреждение.