2014-05-13 5 views
12

Gibt es eine Möglichkeit, alle Kommentare in einem R-Skript mit RStudio zu löschen?Gibt es eine Möglichkeit, alle Kommentare in einem R-Skript mit RStudio zu löschen?

Ich muss eine Datei auf die kleinste mögliche Größe verkleinern. Diese Datei ist jedoch stark kommentiert.

Wenn ich recht habe, könnte die Such- und Ersetzungsfunktion in Rstudio, die REGEX unterstützt, bei diesem Unterfangen hilfreich sein.

Ich schätze jede Hilfe.

+1

Welches Zeichen wird verwendet, um zu kommentieren? '#'? – rmbaughman

+1

Versuchen Sie '#. *' Als Regex. – Roland

+0

Ob es mit Regexes möglich ist oder nicht: siehe z.B. http://stackoverflow.com/questions/2319019/. Wie auch immer, eine lange Geschichte; kurz gesagt: nur Parser wird dich retten. – gagolews

Antwort

18

Ich würde diese Aufgabe nicht mit Regexen nähern. Es kann funktionieren, aber nur in einfachen Fällen. Betrachten Sie den folgenden /tmp/test.R Skript:

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)} #... 

Wie Sie sehen, es ist ein wenig kompliziert zu erklären, wo der Kommentar wirklich beginnt.

Wenn Sie nichts dagegen haben Ihren Code Neuformatierung (na ja, Sie sagten, dass Sie die kleinste Code möglich wollen), versuchen Sie Folgendes:

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

die /tmp/out.R mit geben:

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

Alternativ dazu verwenden, um eine Funktion aus dem formatR Paket:

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 hat ein blank Argument, das von Ihrem Interesse sein könnte. Aber ich kann es nicht mit formatR 0.10 + R 3.0.2 arbeiten ...

+2

Genau das, was ich dachte! Und das sollte auch die Anzahl der Leerzeichen reduzieren, damit es den Code minimiert :) – digEmAll

Verwandte Themen