Как правильно документировать слоты классов S4 с помощью Roxygen2?

Для документирования классов с помощью roxygen(2), указание заголовка и описания/детальных элементов кажется таким же, как и для функций, методов, данных и т.п. Однако слоты и наследование являются их собственным видом. Какова лучшая практика -- текущая или планируемая -- документирования классов S4 в roxygen2?

Due Diligence:

Я нашел упоминание метки @slot в ранних описаниях роксигена. Пост списка рассылки R-формы 2008 года. похоже, указывает на то, что он мертв, и нет поддержки для @slot в roxygen:

Это верно для roxygen2? В ранее упомянутом сообщении говорится о том, что пользователь должен вместо этого сделать свой собственный постатейный список с разметкой LaTeX. Например новый класс S4, который расширяет "символ", будет закодирован и документирован таким образом:

#' The title for my S4 class that extends \code{"character"} class.
#'
#' Some details about this class and my plans for it in the body.
#'
#' \describe{
#'    \item{myslot1}{A logical keeping track of something.}
#'
#'    \item{myslot2}{An integer specifying something else.}
#' 
#'    \item{myslot3}{A data.frame holding some data.}
#'  }
#' @name mynewclass-class
#' @rdname mynewclass-class
#' @exportClass mynewclass
setClass("mynewclass",
    representation(myslot1="logical",
        myslot2="integer",
        myslot3="data.frame"),
    contains = "character"
)

Однако, несмотря на то, что это работает, этот \describe , \item подход к документированию слотов кажется несовместимым с остальной частью roxygen(2), в том, что нет @-ограниченные метки и слоты могут остаться незадокументированными без возражений со стороны roxygenize(). Это также ничего не говорит о последовательном способе документирования наследования определяемого класса. Я полагаю, что зависимость все еще работает нормально (если определенный слот требует небазовый класс из другого пакета), используя тег @import.

Итак, подведем итог, каков в настоящее время лучший опыт работы со слотами roxygen(2)?

На данный момент, похоже, есть три варианта для рассмотрения:

  • A -- Itemized list (как, например, выше).
  • B -- @слот ... но с дополнительными тегами/внедрением я пропустил. Я не смог получить @слот для работы с roxygen / roxygen2 в версиях, где он был включен в качестве замены постатейного перечня в примере наверху. Опять же, вышеприведенный пример работает с кислородом(2).
  • C -- Какой-то альтернативный тег для указания слотов, например @param, который выполнил бы то же самое.

Я заимствую/расширяю этот вопрос из сообщения, которое я сделал на странице разработки roxygen2 на github.

302
задан user227710 10 July 2015 в 02:53
поделиться