как прочитать файл .R в виде строки или как извлечь комментарии (# строк) из кода R - PullRequest
0 голосов
/ 09 октября 2018

Я хочу извлечь комментарии из исходного файла.все строки, начинающиеся с символа #, упоминаются в файле .R

1 Ответ

0 голосов
/ 09 октября 2018

Для полноты вот мой комментарий в качестве ответа.Используя такой исходный файл как arbabnasir.R:

# /12057918/kak-prochitat-fail-r-v-vide-stroki-ili-kak-izvlech-kommentarii-strok-iz-koda-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] "# /12057918/kak-prochitat-fail-r-v-vide-stroki-ili-kak-izvlech-kommentarii-strok-iz-koda-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"): символ комментария находится в строке, поэтому он не является символом комментария.Это перестает быть эффективной проблемой регулярных выражений и входит в токенизацию источника и контекстную интерпретацию, что выходит за рамки этого вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...