È disponibile uno strumento (editor, script, qualunque ...) che possa riformattare automaticamente il codice R? Non ha bisogno di essere personalizzabile, ma deve essere in grado di riconoscere istruzioni separate da punto e virgola o da una nuova riga poiché questo codice ha entrambi. Se è in grado di mettere tutte le istruzioni su una linea separata, riordinare coerentemente i blocchi di codice e posizionare coerentemente le parentesi sarò molto felice.per auto-formattare il codice R
Modifica: che riassume i risultati
Grazie per le grandi risposte. Ecco cosa ho trovato.
- Sia ESS che StatET sono ottimi editor R e fanno un buon lavoro di rientro automatico dei blocchi di codice. StatET ti consente di selezionare-tutto e ri-indentare tutto in un file in una sola volta. Da quello che ho potuto dire ESS ti permette di rientare un'intera funzione def in una sola volta ma non l'intero file (correggimi se l'ho perso). Nessuno di questi aggiusterà il posizionamento del controvento o spezzerà le linee multi-statement. (Es: i = n * b; a = i + 1)
- formatR è fantastico. Oltre a correggere i rientri, posiziona le parentesi in modo coerente e suddivide le linee multi-statement.
Ecco una piccola funzione che ho scritto in modo da poter convertire un'intera directory di origine (utilizzando la stessa funzione di base di formatR che è stranamente nel pacchetto di animazione).
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, ...)
}
}
}
Scrivo "codice carino" dall'inizio perché lo trovo più facile da leggere. Io uso il plugin StatET per Eclipse (ho provato ESS ma lo trovo paragonabile a StatET) che è perfettamente soddisfacente per la mia linea di lavoro. –
@romunov si, sono d'accordo ma la maggior parte del codice R che devo modificare non è stata inizialmente creata da me – Keith
Keith, buon punto. In tal caso, trovo formatR come un'opzione eccellente (come hai già scoperto). –