Я создаю пакет R, используя Roxygen2 для документации. Я хочу реализовать один и тот же метод S4 для каждого из двух классов, которые есть в моей программе. Я не знаю, как правильно настроить документацию для них, чтобы получить одну страницу справки.
Я провел день, пытаясь найти подходящую для него конфигурацию, и я проверил несколько сообщений (например, a , b , c), но я все еще не могу заставить его работать должным образом.
Мои два класса выглядят так:
#' @title Class: Class1
#' @description Description for Class1.
#' @slot x an x.
#' @rdname Class1-class
#' @export
setClass("Class1", representation(x = "numeric"))
#' @title Class: Class2
#' @description Description for Class 2.
#' @slot y a y.
#' @slot z a z.
#' @rdname Class2-class
#' @export
setClass("Class2", representation(y = "numeric", z = "numeric"))
Для обоих классов я хочу реализовать myMethod
. Таким образом, следуя предложению этой статьи , я создал фиктивный файл документации, в котором я документирую NULL и настроил информативное @ имя.
Файл фиктивной документации выглядит следующим образом:
#' @title myMethod
#' @description Runs myMethod.
#' @param object an object.
#' @name myMethod
NULL
Попытка 1
Реализация методов выглядит следующим образом:
Для Class1
if(!isGeneric("myMethod")) {setGeneric("myMethod", function(object) standardGeneric("myMethod"))}
#' @rdname myMethod
#' @export
setMethod("myMethod", "Class1", function(object) myMethod.Class1(object))
myMethod.Class1 <- function(object) return(5+object@x)
Для Class2
if(!isGeneric("myMethod")) {setGeneric("myMethod", function(object) standardGeneric("myMethod"))}
#' @rdname myMethod
#' @export
setMethod("myMethod", "Class2", function(object) myMethod.Class2(object))
myMethod.Class2 <- function(object) return(object@y+object@z)
Я могу проверить свою посылку и не получать ошибок, предупреждений или заметок. Однако мне нужна одна справочная страница для myMethod
, а приведенная выше структура дает мне две справочные страницы: myMethod
и myMethod-method
. Обратите внимание, что на единственной странице справки, которую я хочу, я ожидаю также иметь одно общее описание, которое я написал в моем фиктивном файле, а не два объединенных описания.
Я не знаю как следует настроить документацию таким образом, чтобы я получал единственную myMethod
справочную страницу.
Попытка 2
В дополнение к описанной выше настройке я пробовал структура, предложенная в этом SO-ответе следующим образом:
для Class1
if(!isGeneric("myMethod")) {setGeneric("myMethod", function(object) standardGeneric("myMethod"))}
#' @rdname myMethod-methods
#' @aliases myMethod,Class1,Class1-method
setMethod("myMethod", "Class1", function(object) myMethod.Class1(object))
myMethod.Class1 <- function(object) return(5+object@x)
для Class2
if(!isGeneric("myMethod")) {setGeneric("myMethod", function(object) standardGeneric("myMethod"))}
#' @rdname myMethod-methods
#' @aliases myMethod,Class2,Class2-method
setMethod("myMethod", "Class2", function(object) myMethod.Class2(object))
myMethod.Class2 <- function(object) return(object@y+object@z)
С этой структурой я получаю один Страница справки с именем myMethod
, как я хочу. Тем не менее, я также получаю "myMethod-method.Rd отсутствует имя / заголовок. Пропуск" ошибка во время установки и перезапуска. Нет проблем при проверке. Я не знаю, подходит ли эта структура к go, но чего-то не хватает, чтобы устранить ошибку.
Оцените ваши входные данные!