Für die Dokumentation von Klassen mit Sauerstoff (2) scheint die Angabe eines Titels und einer Beschreibung / Details dieselbe zu sein wie für Funktionen, Methoden, Daten usw. Slots und Vererbung sind jedoch ihre eigene Tierart. Was ist die derzeitige oder geplante Best Practice für die Dokumentation von S4-Klassen in roxygen2?
Due Diligence:
Ich fand Erwähnung eines @slotTags in frühen Beschreibungen von Sauerstoff.
Ein Beitrag der R-Forge-Mailingliste von 2008
scheint darauf hinzudeuten, dass dies tot ist, und es gibt keine Unterstützung für @slotin roxygen:
Gilt das für roxygen2? Der zuvor erwähnte Beitrag schlägt vor, dass ein Benutzer stattdessen eine eigene Auflistung mit LaTeX-Markup erstellen sollte. Beispielsweise würde eine neue S4-Klasse, die die "character"Klasse erweitert, wie folgt codiert und dokumentiert:
#' 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"
)
Doch obwohl dies funktioniert, dies \describe, \itemAnsatz für die Slots zu dokumentieren scheint unvereinbar mit dem Rest roxygen (2), dass es keine @separierten Tags und Slots ohne Einwand von undokumentiert gehen könnte roxygenize(). Es sagt auch nichts über eine konsistente Methode aus, um die Vererbung der zu definierenden Klasse zu dokumentieren. Ich stelle mir vor, dass die Abhängigkeit mit dem @importTag im Allgemeinen immer noch gut funktioniert (wenn für einen bestimmten Slot eine Nicht-Basisklasse aus einem anderen Paket erforderlich ist) .
Zusammenfassend lässt sich sagen, was ist die derzeitige Best Practice für Roxygen (2) -Slots?
Momentan scheinen drei Optionen in Betracht zu ziehen:
- A - Auflistung der Listen (wie im obigen Beispiel).
- B -
@slot... aber mit zusätzlichen Tags / Implementierung habe ich verpasst. Ich konnte @slot nicht dazu bringen, mit roxygen / roxygen2 in Versionen zu arbeiten, in denen es als Ersatz für die im obigen Beispiel aufgeführte Liste enthalten war. Auch hier funktioniert das obige Beispiel mit Sauerstoff (2).- C - Ein alternatives Tag zum Festlegen von Slots, mit
@paramdem dasselbe erreicht werden kann.
Ich leihe mir diese Frage aus einem Beitrag aus, den ich auf der roxygen2Entwicklungsseite von Github verfasst habe .
setClassAnweisungen enthält als setMethod. Die einmal vorgenommene Änderung @slotwird nicht zu schmerzhaft sein.
@slotist wahrscheinlich das, was Sie langfristig wollen, aber es muss zuerst implementiert werden ...