Как переключить комментарии roxygen в Rstudio?

В комментариях Roxygen строки начинаются с префикса #'. При написании и тестировании примеров для функций приятно иметь возможность включать и выключать комментарии. Я мог бы скопировать и вставить код назад и вперед в vim и удалить или добавить эти комментарии, но это не очень элегантно.

  • Есть ли простой способ переключить комментарии roxygen в Rstudio?
  • В качестве альтернативы, есть ли другой способ эффективно запустить пример кода R, который закомментирован символами комментариев roxygen?

Обновление. Думая нестандартно, я полагаю, что использование @example examples/foo.r — это альтернативный способ избежать использования комментариев Roxygen для фактического кода примера (т. е. путем получения примера из файла, т. е. examples/foo.r).


person Jeromy Anglim    schedule 05.10.2013    source источник
comment
Я видел, как люди комментировали код if(TRUE/FALSE) {}. Вы можете переключить это с помощью одной буквы.   -  person Roman Luštrik    schedule 05.10.2013


Ответы (2)


Вы можете написать собственную функцию, извлекающую пример кода из вашего R-файла. Это аналогично purl в пакете knit или Stangle. Вот пример того, что вы можете сделать. Функция неэффективная, но я пишу ее просто для того, чтобы показать идею. Это должно быть хорошей отправной точкой. Предполагается также, что у вас уже есть исходный файл R или, по крайней мере, задокументированная функция уже существует в сеансе R.

purl.examples <- function(fileName){
  ll <- readLines(fileName)
  ex.lines <- grep('@examples',ll)   ## get the example's lines
  ## for each example loop till
  ## there is no comment (inefficient)
  examples  <- lapply(ex.lines , function(x){
    i <- x+1
    code <- list()
    while(grepl("#'",ll[i])){
      l <- c(code,gsub("#'","",ll[i],fixed=TRUE))
      i <- i+1      
    }
    code
  })
}

Затем вы можете назвать это, например, так:

lapply(purl.examples('code.R'), 
       function(ex) eval(parse(text=ex))) ## safer to use evaluate package here
person agstudy    schedule 05.10.2013

Что касается предложенного вами варианта:

  • В качестве альтернативы, есть ли другой способ эффективно запустить пример кода R, который закомментирован символами комментариев roxygen?

Если вы нажмете CTRL+[Enter] внутри блока Roxygen2 @examples, Rstudio отправит выбранный код (строку или выделенный раздел) на консоль R. Чтобы использовать, просто объявите блок кода @examples в строке, предшествующей коду с комментариями roxygen.

#' @examples
#'   ... your original roxygen commented code ...

Вы можете поместить блок @examples в любом месте вашего кода. Это становится проблемой, если вы разрабатываете пакет и используете блок по назначению.

Если вы ищете способ переключения кода, я бы использовал подход, предложенный @Roman в комментариях к вашему вопросу.

person ctbrown    schedule 24.10.2014