¿Hay alguna herramienta (editor, script, lo que sea ...) disponible que pueda reformatear automáticamente el código R? No necesita ser personalizable, pero debe poder reconocer las declaraciones separadas por punto y coma o líneas nuevas, ya que este código tiene ambas. Si puede poner todas las declaraciones en una línea separada, sangrar bloques de código consistentemente y colocar llaves de forma consistente, estaré muy feliz.herramienta para formatear automáticamente el código R
Editar: resume las conclusiones
gracias por los grandes respuestas. Esto es lo que he encontrado.
- Tanto ESS como StatET son excelentes editores de R y hacen un buen trabajo al autodetectar bloques de código. StatET le permite seleccionar todo y volver a sangrar todo en un archivo a la vez. Por lo que pude decir, ESS le permite sangrar una definición de función completa de una vez, pero no el archivo completo (corríjase si me lo perdí). Ninguno de estos arregla la colocación de la abrazadera ni divide las líneas de las declaraciones múltiples. (Por ejemplo: i = n * b; a = i + 1)
- formatR es impresionante. Además de corregir la indentación, también colocará llaves de forma consistente y dividirá líneas de instrucciones múltiples.
Aquí hay una pequeña función que escribí para poder convertir un directorio de origen completo (usando la misma función subyacente que formatR que está extrañamente en el paquete de animación).
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, ...)
}
}
}
Escribo "código bonito" desde el principio porque me resulta más fácil de leer. Utilizo el plugin StatET para Eclipse (lo he intentado con ESS, pero me parece comparable con StatET), que es perfectamente satisfactorio para mi línea de trabajo. –
@romunov sí, estoy de acuerdo, pero la mayor parte del código R que tengo que modificar no fue creado inicialmente por mí – Keith
Keith, buen punto. En ese caso, considero que el formato R es una excelente opción (como ya ha descubierto). –