2012-01-15 3 views
6

У меня есть функция, которая делает не что иное, как объявление уникальным attr любому объекту R. База демо:Документирование функций setter с 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) 
} 

Это работает как шарм для создания хорошего файла Rd кроме, соответствующая часть:

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

И, конечно, это вызывает предупреждение при запуске R CMD check, как это должно быть foo(var) <- value.

Любые подсказки были бы в восторге!


Update: благодаря richierocks, кажется, есть fix

+0

Вы используете roxygen или roxygen2? – hadley

+0

@hadley: roxygen2, просто добавил тег roxygen, чтобы привлечь больше внимания. – daroczig

+0

Какую версию вы используете? Roxygen2 должен делать это автоматически с 2.2 – hadley

ответ

7

Вы можете использовать roxygen тег @usage

Вот пример одного из моих пакетов:

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

Это приводит к моей желаемой документации:

Usage 

    pattern(x) <- value 

Arguments 
x surveydata object 

value New value 
+0

Работает как шарм, спасибо @ Andrie за то, что он обратил мое внимание на «использование @» - я просто не понимаю, как я мог не обращать внимания на этот полезный тег. – daroczig

+1

Это потому, что вам никогда не нужно использовать '@ usage' - всякий раз, когда вы это делаете, это ошибка в roxygen2, и вы должны подать отчет об ошибке. – hadley

+0

Спасибо @hadley, я добавил комментарий к [соответствующему вопросу] (https://github.com/klutometis/roxygen/issues/38#issuecomment-3516591). – daroczig