2013-10-05 8 views
9

Bei Roxygen-Kommentaren handelt es sich um vorangestellte Zeilen mit #'. Wenn man Beispiele für Funktionen schreibt und testet, ist es schön, Kommentare ein- und ausschalten zu können. Ich könnte den Code kopieren und einfügen und zurück zu vim und entfernen oder fügen Sie diese Kommentare hinzu, aber das ist nicht sehr elegant.Wie roxygen Kommentare in Rstudio wechseln?

  • Gibt es eine einfache Möglichkeit, um roxygen Kommentare in Rstudio wechseln?
  • Gibt es alternativ eine andere Möglichkeit, Beispiel-R-Code effizient auszuführen, der von Kommentaren von roxygen auskommentiert wird?

aktualisieren: seitlich denke, ich @example examples/foo.r nehme verwendet, ist eine alternative Art und Weise mit der Vermeidung Roxygen Kommentare für den tatsächlichen Beispielcode zu verwenden (das heißt, durch das Beispiel aus einer Datei Sourcing, das heißt examples/foo.r).

+1

Ich habe Leute kommentieren Code von 'if (TRUE/FALSE) {}'. Sie können das mit einem Buchstaben umschalten. –

Antwort

2

Sie können eine eigene Funktion schreiben, die Beispielcode aus Ihrer R-Datei extrahiert. Dies ist analog zu purl in knit Paket oder Stangle. Hier ein Beispiel dafür, was Sie tun können. Die Funktion ist nicht effizient, aber ich schreibe es nur, um die Idee zu zeigen. Es sollte ein guter Startpunkt sein. Es nimmt auch an, dass Sie Ihre R-Datei bereits beziehen oder dass die dokumentierte Funktion in der R-Sitzung bereits vorhanden ist.

purl.examples <- function(fileName){ 
    ll <- readLines(fileName) 
    ex.lines <- grep('@examples',ll) ## get the example's lines 
    ## for each example loop till 
    ## there is no comment (inefficient) 
    examples <- lapply(ex.lines , function(x){ 
    i <- x+1 
    code <- list() 
    while(grepl("#'",ll[i])){ 
     l <- c(code,gsub("#'","",ll[i],fixed=TRUE)) 
     i <- i+1  
    } 
    code 
    }) 
} 

Dann können Sie es wie dies zum Beispiel nennen:

lapply(purl.examples('code.R'), 
     function(ex) eval(parse(text=ex))) ## safer to use evaluate package here 
2

Im Hinblick auf Ihre vorgeschlagene Alternative:

  • Alternativ ist es eine andere Möglichkeit, um effizient Beispiel R Code ausführen, wird von roxygen Kommentarzeichen auskommentiert?

Wenn Sie STRG + [Enter] drücken innerhalb eines Roxygen2 @examples Block, Rstudio wird der ausgewählte Code (Zeile oder markierten Bereich) an die R-Konsole senden. Um zu verwenden, deklarieren Sie einfach den @examples Codeblock in einer Zeile, die Ihrem von roxygen kommentierten Code vorangestellt ist.

#' @examples 
#' ... your original roxygen commented code ... 

können Sie einen @examples Block überall in Ihrem Code setzen. Dies wird zu einem Problem, wenn Sie ein Paket entwickeln und den Block für den vorgesehenen Zweck verwenden.

Wenn Sie nach einer Möglichkeit suchen, Code umzuschalten, würde ich den von @Roman vorgeschlagenen Ansatz in den Kommentaren zu Ihrer Frage verwenden.