2013-10-05 44 views
9

Roxygen評論涉及與#'前綴行。 在編寫和測試函數示例時,能夠打開和關閉註釋非常好。我可以將代碼複製並粘貼到vim中,然後刪除或添加這些註釋,但這不太優雅。如何在Rstudio中切換roxygen註釋?

  • 是否有任何簡單的方法在Rstudio中切換roxygen註釋?
  • 另外,是否有另一種方法來有效地運行由roxygen註釋字符註釋掉的示例R代碼?

更新:橫向的思考,我想使用@example examples/foo.r是避免不必使用Roxygen徵求意見的實際示例代碼的另一種方式(即,通過從文件採購的例子中,即,examples/foo.r)。

+1

我見過人們用'if(TRUE/FALSE){}'評論代碼。你可以用一個字母切換。 –

回答

2

您可以編寫自己的函數,從R文件中提取示例代碼。這與knit包中的purlStangle類似。這裏有一個你可以做的例子。該函數效率不高,但我只是爲了展示這個想法而寫它。這應該是一個很好的起點。它還假定您已經獲得了您的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 
2

對於你提出的替代方案:

  • 另外,有另一種方式來有效地運行爲R代碼被roxygen註釋字符註釋掉了嗎?

如果按下CTRL + [確定]一個Roxygen2 @examples塊內,將Rstudio所選擇的碼(行或高亮部分)發送到R控制檯。要使用只需在roxygen註釋代碼之前的行上聲明@examples代碼塊即可。

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

您可以將@examples塊放在代碼的任何位置。如果你正在開發一個軟件包,並且你正在使用該塊來達到其預期目的,這會變成一種拖累。

如果您正在尋找切換代碼的​​方法,我會在您的問題的評論中使用@Roman提出的方法。

相關問題