2012-01-15 11 views
6

Tengo una función que no hace más que anuncios un único attr a cualquier objeto R. demostración de base:Documentando funciones del setter con roxygen

#' Setter function 
#' @param x an R object 
#' @param value a character value to set 
#' @export 
`foo<-` <- function(x, value){ 
    attr(x, 'foo') <- value 
    return(x) 
} 

Esto funciona como un encanto, excepto para generar un buen archivo Rd, parte pertinente:

\usage{ 
    foo(var, value) <- value 
} 

Y, por supuesto, se desencadena una advertencia mientras se ejecuta R CMD check como debe ser foo(var) <- value.

¡Cualquier pista sería muy apreciada!


actualización: gracias a richierocks parece que hay un fix

+0

¿Está utilizando roxygen o roxygen2? – hadley

+0

@hadley: roxygen2, acaba de agregar la etiqueta roxygen también para obtener más atención. – daroczig

+0

¿Qué versión estás usando? Roxygen2 debería hacerlo automáticamente desde 2.2 – hadley

Respuesta

7

Puede utilizar la etiqueta roxygen @usage

Este es un ejemplo de uno de mis paquetes:

#' @rdname pattern 
#' @usage pattern(x) <- value 
#' @param value New value 
#' @export pattern<- 
"pattern<-" <- function(x, value=c("^", "($|(_\\d+(_\\d+)*)$)")){ 
    attr(x, "pattern") <- value 
    x 
} 

Esto da como resultado la documentación deseada:

Usage 

    pattern(x) <- value 

Arguments 
x surveydata object 

value New value 
+0

Funciona como un amuleto, gracias @Andrie por llamar mi atención a '@ usage' - simplemente no sé cómo no puedo dejar de notar esta útil etiqueta. – daroczig

+1

Eso se debe a que nunca deberías usar '@ usage'; cada vez que lo haces es un error en roxygen2 y deberías presentar un informe de error. – hadley

+0

Gracias @hadley, he agregado un comentario sobre el [tema apropiado] (https://github.com/klutometis/roxygen/issues/38#issuecomment-3516591). – daroczig

Cuestiones relacionadas