2013-03-08 8 views
10

Jestem całkiem nowy dla knitr, ale napisałem skrypt, który generuje raport dla hrabstwa. Jedną z pierwszych linii w pierwszym fragmencie kodu jest display_county <- "King", która wysyła zapytanie do bazy danych, aby uzyskać wiele przydatnych informacji na temat King County. Teraz chcę tworzyć raporty dla każdego hrabstwa w moim stanie. Jedyną linią w skrypcie, która wymaga zmiany, jest definicja display_county.Generowanie raportów knitr

Wiem, że pakiety brew są skonfigurowane dla takich rzeczy i wiem, że nakładają się one między brew i knitr, ale nie wiem, co powinienem używać.

This answer using Brew and Sweave będzie działać z niewielkimi modyfikacjami, ale czy istnieje przyjemny sposób na ominięcie brewknitr?

+0

Czy istnieje jakiś powód nie możesz zrobić wektora powiatów, a potem go powtórzyć? –

+0

@BryanHanson Wcale nie, i to właśnie zrobiłem używając "naparu" jak w połączonej odpowiedzi Ramnatha. Ale * to * wydaje się być czymś, co powinienem być w stanie zrobić w "knitr". – Gregor

+0

Czy próbowałeś go w 'knitr'? Jeśli działa w 'R' za pomocą interaktywnego lub skryptu, nie rozumiem, dlaczego nie możesz tego zrobić również za pomocą' knitr'. Nigdy nie używałem "naparu", ale szeroko stosowałem "knitr" i "sweave" i myślę, że powinno być to możliwe. –

Odpowiedz

5

Jeśli dobrze rozumiem, będziesz używać tego samego pliku Rnw dla każdego hrabstwa, więc tylko zmienna display_county będzie inna dla każdego hrabstwa. Najpierw zadzwoniłbym do bazy danych, aby uzyskać wszystkie nazwy okręgów i zapisać je w wektorze (powiedzmy ... myCounties). Po tym, raporty mogą być generowane z skrypt zawierający następujące elementy:

for(dc in myCounties) { 
    knit2pdf(input='county_report.Rnw', output=paste0(dc, '_county_report.pdf')) 
} 

Aby efektywniej obsługiwać błędy, można również zawinąć wywołanie knit2pdf na oświadczeniu tryCatch:

for(dc in myCounties) { 
    tryCatch(knit2pdf(input='county_report.Rnw', output=paste0(dc, '_county_report.pdf'))) 
} 
+1

'c' jest dość przerażającą nazwą indeksu pętli, ponieważ jest to również bardzo ważna funkcja w R. Możesz rozważyć zmianę nazwy indeksu. – Dason

+0

Prawda ... Zostanie zmieniona. – JAponte