2013-03-03 7 views
0

Я преподавал класс, в котором у меня были ученики, которые использовали пакет, который я написал. Теперь, когда класс заканчивается, я хотел бы предоставить им код для каждой из этих функций, встроенный в документацию для функций. Есть ли глобальный флаг, который я могу установить для этого? Какой-то взлом кода?Есть ли глобальный флаг, который может быть установлен для предоставления кода вместе с документацией ROxygen?

+0

Вы хотите, чтобы код функции отображался в файлах справки для самого кода? Зачем? – Dason

+1

это больше похоже на «грамотное программирование», чем «воспроизводимые исследования»: http://rpubs.com/bbolker/3153 –

+0

@Dason: Да, это то, что я хотел бы. Зная моих пользователей, я думаю, что им будет проще находить скрипты, которые они хотят в PDF-формате, чем в пучке разбросанных ROxygen-отмеченных скриптов или даже с одним сгенерированным ROxygen скриптом. – russellpierce

ответ

1

Вы можете предварительно обработать ваши R-файлы с помощью пакета для варки, например.

Файл 'Foo-tmp.r'

##' a function that doesn't do much 
##' 
##' @title foo 
##' @param x 
##' @param y 
##' @param z 
##' @return error message 
##' @author Baptiste 
##' @examples 
##' dontrun{ 
#<%= cat(paste0("##'", getSrcref(foo), "\n")) %> ##' } 
foo <- function(x, y, z){ 
    rnorm(10) == 1 
    # inline comment 
    .NotYetImplemented() 
    " other stuff" 
    return(FALSE) 
    } 

Затем обработать файл для создания foo.r

source("foo-tmp.r") # to know what the function is 
brew("foo-tmp.r", "foo.r") 

с результатом выхода:

##' a function that doesn't do much 
##' 
##' @title foo 
##' @param x 
##' @param y 
##' @param z 
##' @return error message 
##' @author Baptiste 
##' @examples 
##' dontrun{ 
###'function(x, y, z){ 
##' rnorm(10) == 1 
##' # inline comment 
##' .NotYetImplemented() 
##' " other stuff" 
##' return(FALSE) 
##' } 
##' } 
foo <- function(x, y, z){ 
    rnorm(10) == 1 
    .NotYetImplemented() 
    " other stuff" 
    return(FALSE) 
    } 
+0

на самом деле вам не нужны эти два файла, brew(), вероятно, ничего не делает с обычным файлом R, поэтому вы можете без проблем перезаписывать. – baptiste

+0

Но перезапись самого файла может привести к ситуации, когда функция и документация устарели. Опять же, если вы делаете эту документацию, а затем никогда не меняете функцию снова, это не имеет большого значения ... – Dason

+0

Это решение намного лучше, чем ничего, но все же не так скупо, как я надеялся. Есть ли способ использовать шаблонные теги для достижения желаемого результата без изменения кода для каждой функции, которая должна быть документирована? – russellpierce

0

См this related question. Глобального флага или решения нет. @ baptiste так же хорош, как и получается. Ответ установлен на wiki сообщества, если это положение вещей изменится.

 Смежные вопросы

  • Нет связанных вопросов^_^