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 @slot
Tags 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 @slot
in 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
, \item
Ansatz 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 @import
Tag 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
@param
dem dasselbe erreicht werden kann.
Ich leihe mir diese Frage aus einem Beitrag aus, den ich auf der roxygen2
Entwicklungsseite von Github verfasst habe .
setClass
Anweisungen enthält als setMethod
. Die einmal vorgenommene Änderung @slot
wird nicht zu schmerzhaft sein.
@slot
ist wahrscheinlich das, was Sie langfristig wollen, aber es muss zuerst implementiert werden ...