¿Cómo documentar correctamente los métodos S4 “[” y “[<-“ usando roxygen?
(3)
A continuación, publiqué un mini ejemplo en el que quiero escribir documentación para un método “[“
para una clase S4. ¿Alguien sabe cómo documentar correctamente un método para el genérico "["
utilizando roxygen y S4?
Aparece una advertencia al revisar el paquete después de la construcción (ver más abajo).
#'' An S4 class that stores a string.
#'' @slot a contains a string
#'' @export
setClass("testClass",
representation(a="character"))
#'' extract method for testClass
#''
#'' @docType methods
#'' @rdname extract-methods
setMethod("[", signature(x = "testClass", i = "ANY", j="ANY"),
function (x, i, j, ..., drop){
print("void function")
}
)
Extracto del cheque del paquete:
* checking for missing documentation entries ... WARNING
Undocumented S4 methods:
generic ''['' and siglist ''testClass''
All user-level objects in a package (including S4 classes and methods)
should have documentation entries.
See the chapter ''Writing R documentation files'' in manual ''Writing R Extensions''.
A partir de roxygen2> 3.0.0, ya no necesita trabajar alrededor y solo necesita:
#'' Extract parts of testClass.
#''
setMethod("[", signature(x = "testClass", i = "ANY", j="ANY"),
function (x, i, j, ..., drop){
print("void function")
}
)
Finalmente lo descubrí más o menos. Al menos funciona ahora:
#'' An S4 class that stores a string.
#'' @slot a contains a string
#'' @export
setClass("testClass",
representation(a="character"))
#'' extract parts of testClass
#''
#'' @name [
#'' @aliases [,testClass-method
#'' @docType methods
#'' @rdname extract-methods
#''
setMethod("[", signature(x = "testClass", i = "ANY", j="ANY"),
function (x, i, j, ..., drop){
print("void function")
}
)
Para lo que vale, en el caso de una función de reemplazo, querrá algo como lo siguiente:
#'' An S4 class that stores a list.
#'' @export
setClass("testClass",
representation(a="list"))
#'' extract parts of testClass
#''
#'' @name [
#'' @aliases [,testClass-method
#'' @docType methods
#'' @rdname extract-methods
setMethod("[", signature(x = "testClass", i = "ANY", j="ANY"),
function (x, i, j, ..., drop) {
x@a[i]
}
)
#'' replace names of testClass
#''
#'' @name [
#'' @aliases [<-,testClass-method
#'' @docType methods
#'' @rdname extract-methods
setReplaceMethod("names", signature(x = "testClass", value = "ANY"), definition = function (x, value) {
names(x@a) <- value
x
})