मैं इस कार्य को regexes के साथ नहीं पहुंचूंगा। यह काम कर सकता है, लेकिन केवल साधारण मामलों में। निम्नलिखित /tmp/test.R
स्क्रिप्ट पर विचार करें:
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)} #...
जैसा कि आप देख, यह एक छोटे राज्य के लिए जहां टिप्पणी वास्तव में शुरू होता है जटिल सा है।
आप अपने कोड (अच्छी तरह से, आप ने कहा कि आप छोटी से छोटी कोड संभव चाहते हैं) को पुन: फ़ॉर्मेट कोई आपत्ति नहीं है, कोशिश निम्नलिखित:
x <- 1
y <- "#######"
z <- "# not a comment \" # not \""
f <- function(n) {
for (i in seq_len(n)) print(i)
}
:
writeLines(as.character(parse("/tmp/test.R")), "/tmp/out.R")
साथ /tmp/out.R
दे देंगे जो
वैकल्पिक रूप से, 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)
## }
बीटीडब्ल्यू, tidy_source
में blank
तर्क है, जो आपकी रुचि का हो सकता है। लेकिन मैं इसे प्रारूप आर 0.10 + आर 3.0.2 के साथ काम नहीं कर सकता ...
टिप्पणी करने के लिए किस चरित्र का उपयोग किया जाता है? '#'? – rmbaughman
regex के रूप में '#। *' आज़माएं। – Roland
रेगेक्स के साथ यह संभव है या नहीं: उदाहरण देखें http://stackoverflow.com/questions/2319019/। वैसे भी, एक लंबी कहानी; संक्षेप में: केवल पार्सर आपको बचाएगा। – gagolews