Frage

Gibt es ein Werkzeug (Editor, Skript, was auch immer ...) zur Verfügung, die automatisch umformatieren R-Code? Es ist nicht anpassbar sein müssen, aber es muss in der Lage sein, Aussagen entweder durch Semikolons oder Zeilenumbrüche getrennt zu erkennen, da dieser Code zurückgreifen. Wenn es alle Anweisungen in einer separaten Zeile setzen, konsequent Codeblöcke einrücken und konsequent Ort Klammern werde ich sehr glücklich sein.

Edit: eine Zusammenfassung Ergebnisse

Vielen Dank für die tollen Antworten. Hier ist, was ich gefunden habe.

  • Sowohl ESS und StatET sind große R-Editoren und einen schönen Job von Auto tun Codeblöcke einrücken. StatET können Sie auswählen, alles und re-indent alles in einer Datei auf einmal. Von dem, was ich konnte ESS sagen können Sie eine ganze Funktion def auf einmal, aber nicht die gesamte Datei einrücken (bitte korrigieren Sie mich, wenn ich es verpasst). Keines dieser Wille fix Klammer Platzierung oder brechen mit mehreren Anweisungen Linien. (Eg: i = n * b, a = i + 1)
  • ist formatR genial. Zusätzlich Vertiefung der Fixierung wird es auch Platz Klammer konsequent und teilt mit mehreren Anweisungen Linien.

Hier ist eine kleine Funktion, die ich so geschrieben, dass ich eine ganze Quelle dir umwandeln kann (die gleiche zugrunde liegende Funktion als formatR verwendet, die seltsam in dem Animations-Paket ist).

library("animation")

tidy.all <- function(inDir = NULL, outDir = NULL, ...) {
    if (is.null(inDir) || is.na(outDir)) 
        stop("inDir can't be null or NA")
    if (!file.info(inDir)$isdir) 
        stop("inDir must be a directory")

    if (is.null(outDir) || is.na(outDir)) 
        stop("outDir can't be null or NA")
    if (!file.exists(outDir)) 
        dir.create(outDir)
    if (!file.info(outDir)$isdir) 
        stop("outDir must be a directory")

    for (f in dir(inDir)) {
        currFile <- file.path(inDir, f)
        if (length(grep(".*\\.R$", currFile, perl = T))) {
            outFile <- file.path(outDir, f)
            if (file.exists(outFile)) 
                stop(paste("refusing to overwrite", outFile))

            tidy.source(currFile, file = outFile, ...)
        }
    }
}
War es hilfreich?

Lösung

Obwohl ESS eine viel bessere langfristige Lösung ist, wenn man nur einen schnellen Job Formatierung haben, vielleicht ist dies packge helfen: http://yihui.name/en/?s=formatr .

Andere Tipps

Emacs mit ESS tut es sehr gut - und die Standardeinstellungen, wie durch R-Core empfohlen sind in Abschnitt 7 R Coding-Standards der R Internals Handbuch.

Ich verwende StatET , und es funktioniert recht gut für diese.

Sie könnten auch versuchen, die formatR Paket auf CRAN.

Obwohl ich es nie benutzt habe, vielleicht den folgenden Eclipse-Plug-in http: // www .walware.de / it / statet / könnte, um Hilfe zu können.

Sie können Strg + I in statET verwenden den Einzug Ihres Codes zu beheben. Allerdings ist es möglich, formatR Paket mit Code-Schnipsel zu verwenden, die besser vor allem erzeugen führt durch einen Hotkey zuweisen.

Ich hatte das gleiche Problem. Es ist eine wirklich einfache Art und Weise in R Studio für Neuformatierung: Kopieren Sie einfach den gesamten Code und fügen Sie ihn in einem neuen R script

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top