Может ли Sweave автоматически создавать много PDF-файлов?

Я анализирую измерения из многих городов (сотни), и вам нужно создавать отдельные отчеты по городу (в формате Adobe pdf).

Мой процесс выглядит так:

  1. Сначала RStudio подготовит данные для отображения, сохраненные в X.Rda.
  2. В X.Rnw (RStudio) я читаю X.Rda, выбираю один город и создаю таблицы и графики.
  3. В RStudio я нажимаю «Compile PDF» и создается отчет города X.pdf.
  4. Я перехожу к шагу 2, выбираю другой город и т. Д.

Это очень утомительно, и он идеально подходит для петли для каждого города, но как это можно сделать?

Спасибо, r-contributors!

/Крис

    Вы можете использовать что-то вроде цикла for с изменяющейся глобальной переменной, которая контролирует, какой город вы хотите переплетать в отчет; см. другой пост Run Sweave или knitr с объектами из существующей сессии R

    Код будет похож (предположим, что cities является символьным вектором, и я использую пакет knitr в качестве примера, потому что вы можете указать имя файла для вывода):

     for (city in cities) { knit('city_template.Rnw', output = paste('report_', city, '.tex', sep = '')) } 

    Внутри city_template.Rnw вас есть кусок, как

     <>= make_plot(city, ...) whatever(city, ...) @ 

    Затем вы получите серию файлов tex, названных городами, а остальная часть вашей работы – скомпилировать их в формате PDF (невозможно, чтобы RStudio мог скомпилировать несколько файлов tex, AFAIK, но это тривиально делать это в командной строке или в R с texi2dvi() ).

    Есть одна вещь, которую вам нужно быть осторожным – для каждого выходного файла вам нужно использовать другой префикс рисунка (опция fig.path ), иначе разные города могут переопределять выводные данные друг друга. В knitr это можно сделать следующим образом:

     <>= opts_chunk$set(fig.path = paste('my-prefix-', city, sep = '')) @ 

    Я считаю, что это должно быть безопасным для создания множества отчетов с помощью цикла.

    Кстати, вы наверняка можете достичь той же цели с Sweave; возможно, вы поймете, почему я разработал knitr позже (это не по теме, поэтому я не буду расширять здесь).

    • Сделайте это в среде R.
    • Поместите весь вывод для определенного города в список
    • Напишите свой RnW с кусками, просто вызывающими выходы
    • Сохраните изображение R в той же папке, что и ваш отчет Sweave, и установите wd в эту же папку
    • Sweave (“yourfile.RnW”, output = “yourcity.tex”)
    • Используйте texi2dvi для компиляции вашего tex-файла из R

    Если у вас много городов, вы должны включить это в функцию.

    Давайте будем гением компьютера.