如何以字符串形式读取.R文件或如何从R代码中提取注释(#行)

时间:2018-10-09 16:05:50

标签: r

我想从源文件中提取注释。在.R文件中以#字符开头的所有行

1 个答案:

答案 0 :(得分:0)

出于完整性考虑,以下是我的评论作为答案。将这样的源文件用作arbabnasir.R

# https://stackoverflow.com/questions/52725155/how-to-read-r-file-as-a-string-or-how-to-extract-comments-lines-from-the-r
# some additional comments
myfunc <- function(a, ...) {
  # verify input parameters
  stopifnot(is.integer(a)) # something here
  cat("# hello\n")
  # add one
  a+1L
}

我可以通过这种方式解析它,以仅查看评论:

grep("^\\s*#", readLines("~/StackOverflow/arbabnasir.R"), value=TRUE)
# [1] "# https://stackoverflow.com/questions/52725155/how-to-read-r-file-as-a-string-or-how-to-extract-comments-lines-from-the-r"
# [2] "# some additional comments"                                                                                               
# [3] "  # verify input parameters"                                                                                              
# [4] "  # add one"                                                                                                              

如果您需要所有内容 全行注释:

grep("^\\s*#", readLines("~/StackOverflow/arbabnasir.R"), value=TRUE, invert=TRUE)
# [1] "myfunc <- function(a, ...) {"               
# [2] "  stopifnot(is.integer(a)) # something here"
# [3] "  cat(\"# hello\\n\")"                      
# [4] "  a+1L"                                     
# [5] "}"                                          
# [6] ""                                           

请注意,... # something here注释不是 包含在注释列表中,因为注释字符前面有“东西”。如果尝试延迟提取它们,可能会遇到问题,如我的cat(" hello\n")代码行所示:注释字符位于字符串中,因此实际上不是注释字符。这不再是一个有效的正则表达式问题,而是进入了源标记和上下文解释,远远超出了此问题的范围。