Есть ли способ удалить все комментарии в R script с помощью RStudio?

Есть ли способ удалить все комментарии в R script с помощью RStudio?

Мне нужно уменьшить размер файла до минимального размера. Однако этот файл сильно прокомментирован.

Если я прав, функция поиска и замены в Rstudio, поддерживающая REGEX, может быть полезна при этом.

Я ценю любую помощь.

Ответ 1

Я не буду подходить к этой задаче с регулярными выражениями. Он может работать, но только в простых случаях. Рассмотрим следующее /tmp/test.R script:

x <- 1 # a comment
y <- "#######"
z <- "# not a comment \" # not \"" # a # comment # here

f <- # a function
   function(n) {
for (i in seq_len(n))
print(i)} #...

Как вы видите, немного сложно указать, где действительно начинается комментарий.

Если вы не возражаете переформатировать свой код (ну, вы заявили, что хотите самый маленький код), попробуйте следующее:

writeLines(as.character(parse("/tmp/test.R")), "/tmp/out.R")

который даст /tmp/out.R с:

x <- 1
y <- "#######"
z <- "# not a comment \" # not \""
f <- function(n) {
    for (i in seq_len(n)) print(i)
}

В качестве альтернативы используйте функцию из пакета formatR:

library(formatR)
tidy_source(source="/tmp/test.R", keep.comment=FALSE)
## x <- 1
## y <- "#######"
## z <- "# not a comment \" # not \""
## f <- function(n) {
##     for (i in seq_len(n)) print(i)
## } 

BTW, tidy_source имеет аргумент blank, который может вас заинтересовать. Но я не могу заставить его работать с formatR 0.10 + R 3.0.2...