инструмент к коду автоформата R

Есть ли какой-либо инструмент (редактор, сценарий, безотносительно...) доступен, который может автоматически переформатировать код R? Это не должно быть настраиваемо, но это должно смочь распознать операторы, разделенные или точками с запятой или новыми строками, так как этот код имеет обоих. Если это может поместить все операторы на отдельную строку, последовательно блоки кода отступа и последовательно помещать фигурные скобки, я буду очень счастлив.

Править: суммирование результатов

Спасибо за большие ответы. Вот то, что я нашел.

  • И ESS и StatET являются великими редакторами R и делают хорошее задание автоматических блоков кода расположения с отступом. StatET позволяет Вам выбирать - все и повторно располагать все с отступом в файле сразу. Из того, что я мог сказать, что ESS позволяет Вам располагать с отступом определение целой функции сразу, но не весь файл (исправьте меня, если я пропустил его). Ни один из них не зафиксирует размещение фигурной скобки или разобьет составные строки. (Например: я = n*b; a=i+1)
  • formatR является потрясающим. В дополнение к фиксации добавления отступа это будет также последовательно помещать фигурные скобки и разделять составные строки.

Вот немного функции, которую я записал так, чтобы я мог преобразовать весь исходный dir (использующий ту же базовую функцию в качестве formatR, который находится странно в пакете анимации).

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, ...)
        }
    }
}
17
задан Keith 11 June 2010 в 02:07
поделиться

4 ответа

Хотя ESS является гораздо лучшим долгосрочным решением, если вам просто нужно быстро отформатировать программу, возможно, этот пакет поможет: http://yihui.name/en/?s=formatr.

9
ответ дан 30 November 2019 в 13:27
поделиться

Emacs с ESS делает это исключительно хорошо - а настройки по умолчанию, рекомендованные R Core, находятся в Разделе 7 Стандарты кодирования R руководства R Internals .

7
ответ дан 30 November 2019 в 13:27
поделиться

Я использую StatET, и он неплохо работает для этого.

Вы также можете попробовать пакет formatR на CRAN.

6
ответ дан 30 November 2019 в 13:27
поделиться

Хотя я никогда не использовал его, возможно, следующий плагин eclipse http://www.walware.de/it/statet/ мог бы быть в состоянии помочь.

2
ответ дан 30 November 2019 в 13:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: