Pour documenter les classes avec roxygen (2), la spécification d'un titre et d'une description / détails semble être la même que pour les fonctions, les méthodes, les données, etc. Cependant, les emplacements et l'héritage sont leur propre type d'animal. Quelle est la meilleure pratique - actuelle ou prévue - pour documenter les classes S4 dans roxygen2?
Vérifications nécessaires:
J'ai trouvé la mention d'une @slot
étiquette dans les premières descriptions de roxygen.
Une publication de la liste de diffusion R-forge 2008
semble indiquer que c'est mort, et il n'y a pas de support pour@slot
roxygen:
Est-ce vrai pour roxygen2? Le message mentionné précédemment suggère qu'un utilisateur devrait plutôt créer sa propre liste détaillée avec le balisage LaTeX. Par exemple, une nouvelle classe S4 qui étend la "character"
classe serait codée et documentée comme ceci:
#' 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"
)
Cependant, bien que cela fonctionne, ce \describe
, \item
approche pour documenter les fentes semble incompatible avec le reste de roxygen (2) dans la mesure où il n'y a pas de @
balises et fentes -delimited pourrait aller en situation irrégulière sans objection roxygenize()
. Il ne dit également rien sur un moyen cohérent de documenter l'héritage de la classe en cours de définition. J'imagine que la dépendance fonctionne généralement bien (si un emplacement particulier nécessite une classe non-base d'un autre package) en utilisant la @import
balise.
Donc, pour résumer, quelle est la meilleure pratique actuelle pour les emplacements roxygen (2)?
Il semble qu'il y ait trois options à considérer pour le moment:
- A - Liste détaillée (comme l'exemple ci-dessus).
- B -
@slot
... mais avec des tags / implémentations supplémentaires j'ai raté. Je n'ai pas réussi à faire fonctionner @slot avec roxygen / roxygen2 dans les versions où il était inclus en remplacement de la liste détaillée dans l'exemple ci-dessus. Encore une fois, l'exemple ci-dessus fonctionne avec roxygen (2).- C - Une balise alternative pour spécifier les emplacements, comme
@param
, cela accomplirait la même chose.
J'emprunte / étend cette question à partir d'un post que j'ai fait sur la roxygen2
page de développement sur github .
setClass
instructions que setMethod
. Faire le changement une fois @slot
implémenté ne sera pas trop douloureux.
@slot
est probablement ce que vous voulez à long terme, mais cela doit être mis en œuvre d'abord ...