【问题标题】:How to toggle roxygen comments in Rstudio?如何在 Rstudio 中切换 roxygen 评论?
【发布时间】:2013-10-12 07:04:23
【问题描述】:

Roxygen cmets 涉及以 #' 为前缀的行。 在编写和测试函数示例时,能够打开和关闭 cmets 非常好。我可以将代码来回复制并粘贴到 vim 并删除或添加这些 cmets,但这不是很优雅。

  • 在 Rstudio 中是否有任何简单的方法来切换 roxygen cmets?
  • 或者,是否有另一种方法可以有效地运行被 roxygen 注释字符注释掉的示例 R 代码?

更新:横向思考,我想使用 @example examples/foo.r 是避免在实际示例代码中使用 Roxygen cmets 的另一种方法(即,通过从文件中获取示例,即examples/foo.r)。

【问题讨论】:

  • 我看到有人评论if(TRUE/FALSE) {}的代码。你可以用一个字母来切换它。

标签: r rstudio roxygen2


【解决方案1】:

您可以编写自己的函数,从 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】:

    关于您提出的替代方案:

    • 或者,是否有另一种方法可以有效地运行被 roxygen 注释字符注释掉的示例 R 代码?

    如果您在 Roxygen2 @examples 块中按 CTRL+[Enter],Rstudio 会将选定的代码(行或突出显示的部分)发送到 R 控制台。要使用,只需在您的 roxygen 注释代码之前的行上声明 @examples 代码块。

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

    您可以在代码中的任何位置放置@examples 块。如果您正在开发一个包并且您将块用于其预期目的,这将成为一个拖累。

    如果您正在寻找一种切换代码的​​方法,我会使用 @Roman 在 cmets 中提出的方法来解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 2011-05-20
      • 1970-01-01
      相关资源
      最近更新 更多