2014-05-13 12 views
12

C'è un modo per cancellare tutti i commenti in uno script R usando RStudio?C'è un modo per cancellare tutti i commenti in uno script R usando RStudio?

Ho bisogno di ridurre un file alla dimensione più piccola possibile. Tuttavia, questo file è pesantemente commentato.

Se ho ragione, la funzione di ricerca e sostituzione in Rstudio che supporta REGEX potrebbe essere utile con questo sforzo.

Apprezzo qualsiasi aiuto.

+1

Quale carattere viene utilizzato per commentare? '' #? – rmbaughman

+1

Prova '#. *' Come espressione regolare. – Roland

+0

Se è possibile o meno con espressioni regex: vedere ad es. http://stackoverflow.com/questions/2319019/. Comunque, una lunga storia; in breve: solo parser ti salverà. – gagolews

risposta

18

Non mi avvicino a questo compito con espressioni regolari. Potrebbe funzionare, ma solo in casi semplici. Si consideri il seguente /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)} #... 

Come si vede, è un po 'complicato per indicare dove il commento inizia davvero.

Se non ti dispiace riformattare il codice (beh, lei ha affermato che si desidera il più piccolo codice possibile), provare quanto segue:

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

che darà /tmp/out.R con:

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

alternativa, utilizzare una funzione dal pacchetto 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 ha un argomento blank, che potrebbe essere di vostro interesse. Ma non riesco a farlo funzionare con formatR 0.10 + R 3.0.2 ...

+2

Esattamente quello che stavo pensando! E questo dovrebbe anche ridurre il numero di spazi vuoti in modo da minimizzare il codice :) – digEmAll