Sto scrivendo un pacchetto r utilizzando roxygen2 per la documentazione. Sto avendo qualche problema a documentare i metodi S4. Ho definito un metodo generico s4 (ad esempio myGeneric
) e alcuni metodi che lo implementano.Documenta automaticamente tutti i metodi di un generico S4, utilizzando roxygen2
Domanda: esiste un modo per documentare automaticamente tutti i metodi di un generico?
La soluzione manuale è quello di aggiungere queste due righe per ciascun metodo (questo sarebbe per il primo metodo nel mio esempio fittizio):
##' @rdname myGeneric-methods
##' @aliases myGeneric,numeric,numeric,missing-method
Da quando uso un sacco di metodi, devo aggiungere un lotto per soddisfare il controllo R CMD.
ho letto in Hadley avanzata in merito a documentare i metodi S4 here che si può usare @genericMethods:
Usare @genericMethods nella documentazione generica, se si desidera un elenco automatizzata di tutti i metodi implementati per la generico.
Penso che questo non sia implementato in roxygen2
o implementato con un altro nome. L'unica cosa che ho trovato sul tag @genericMethods
era nel github roxygen3 here, che è stato interrotto (?).
Solo un esempio fittizio, dove mi documento solo il generico e voglio tutti i metodi implementati elencati automaticamente:
##' @param object An object
##' @param data Numeric vector or data.frame
##' @param Fun Function. Default function is \code{sum}
##' @param ... Extra named arguments passed to FUN
##' @docType methods
##' @export
setGeneric("myGeneric", function(object, data, FUN, ...)
{standardGeneric ("myGeneric")})
setMethod("myGeneric", c("numeric", "numeric", "missing"),
function(object, data,...) {
myGeneric(object, data, sum,...)
})
setMethod("myGeneric", c("numeric", "data.frame", "missing"),
function(object, data,...) {
myGeneric(object, as.vector(unlist(data), sum,...)
})
setMethod("myGeneric", c("numeric", "numeric", "function"),
function(object, data, FUN,...) {
## Do something
})
Qualsiasi aiuto sarà molto apprezzato,
alex
non so un modo per documentare automaticamente tutti i metodi di un generico (magari quando '@ genericMethods' sarà implementato). Io uso invece '# '@describeIn myGeneric' di fronte a tutti i miei metodi specifici. Questo non risponde esattamente alla tua domanda, ma penso che sia l'unico modo per ottenerlo per il momento. – jomuller
Ho cercato nel [repository ufficiale di GitHub] (https://github.com/klutometis/roxygen) di roxygen e non ho fondato alcun roclet che dovrebbe fare questo lavoro. Penso che la lista completa dei roclet sia in [/roxygen/R/rocled-rd.R](https://github.com/klutometis/roxygen/blob/d564939daed853988eaa72bb034536c37d7e097c/R/roclet-rd.R). – jomuller
Ho aggiunto un [problema su GitHub] (https://github.com/klutometis/roxygen/issues/264). – jomuller