Czy Sweave może automatycznie tworzyć wiele plików PDF?

Analizuję pomiary z wielu miast (setek) i muszę tworzyć oddzielne raporty dla każdego miasta (w formacie Adobe pdf).

Mój proces wygląda tak:

  1. Pierwsze RStudio do przygotowania danych do wyświetlenia, zapisane w X. Rda.
  2. W X. Rnw (RStudio) czytam X. Rda, wybieram jedno miasto i produkuję tabele i wykresy.
  3. W RStudio naciskam "Skompiluj PDF" i powstaje city-report X. pdf.
  4. przechodzę do kroku 2, wybieram inne miasto i tak on

To jest bardzo uciążliwe, i wygląda idealnie dla pętli for na miasto, ale jak to zrobić?

Thank you r-contributors!

/Chris

Author: Yihui Xie, 2011-12-15

2 answers

Możesz użyć czegoś w rodzaju pętli for ze zmieniającą się zmienną globalną, która kontroluje, które Miasto chcesz wpleść do raportu; zobacz inny post Uruchom Sweave lub knitr z obiektami z istniejącej sesji R

Kod będzie taki jak (Załóżmy, że cities jest wektorem znaków, a ja używam knitr pakiet jako przykład, ponieważ możesz podać nazwę pliku wyjścia):

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

Wewnątrz city_template.Rnw, masz kawałek jak

<<do-my-job>>=
make_plot(city, ...)
whatever(city, ...)
@

Wtedy ty otrzymasz serię plików tex nazwanych przez miasta, a reszta twojego zadania to skompilowanie ich do PDF (nie jest możliwe, aby RStudio skompilowało wiele plików tex, AFAIK, ale jest trywialne, aby to zrobić w wierszu poleceń lub w R z texi2dvi()).

Jest jedna rzecz, na którą musisz uważać - musisz użyć innego prefiksu figury (opcja fig.path) dla każdego pliku wyjściowego, w przeciwnym razie różne miasta mogą zastąpić inne wyjście figury. W knitr, można to zrobić za pomocą to:

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

Uważam, że powinno to być bezpieczne do tworzenia wielu raportów z pętlą.

BTW, z pewnością możesz osiągnąć ten sam cel dzięki Sweave; być może dowiesz się, dlaczego rozwinąłem knitr później (to jest off-topic, więc nie będę tutaj rozbudowywał).

 27
Author: Yihui Xie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:25:33
  • Zrób to w R
  • Umieść wszystkie dane wyjściowe dla konkretnego miasta na liście
  • Napisz swój RnW z kawałkami tylko wywołując wyjścia
  • Zapisz obraz R w tym samym folderze co raport Sweave i ustaw wd w tym samym folderze
  • Sweave ("yourfile.RnW", output = " yourcity.tex")
  • Użyj texi2dvi do skompilowania pliku tex z R

Jeśli masz wiele miast, powinieneś umieścić to w funkcji.

 0
Author: PerrySun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-12 09:19:31