Roxygen评论涉及为#'
添加前缀。
在编写和测试函数示例时,能够打开和关闭注释很好。我可以将代码复制并粘贴到vim并删除或添加这些注释,但这不是很优雅。
更新:横向思考,我认为使用@example examples/foo.r
是避免对实际示例代码使用Roxygen注释的另一种方法(即,通过从文件中获取示例,即,examples/foo.r
)。
答案 0 :(得分: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
答案 1 :(得分:2)
关于您提议的替代方案:
如果在Roxygen2 @examples
块中按CTRL + [Enter],Rstudio会将所选代码(行或突出显示的部分)发送到R控制台。要使用只是在roxygen注释代码之前的行上声明@examples
代码块。
#' @examples
#' ... your original roxygen commented code ...
您可以在代码中的任意位置添加@examples
块。如果您正在开发一个包并且您正在使用该块用于其预期目的,这将成为一种拖累。
如果您正在寻找切换代码的方法,我会在您的问题的评论中使用@Roman提出的方法。