2013-03-08 42 views
10

Tôi khá mới với knitr, nhưng tôi đã viết một tập lệnh tạo báo cáo cho một hạt. Một trong những dòng đầu tiên trong đoạn mã đầu tiên là display_county <- "King" và nó truy vấn một cơ sở dữ liệu để tạo ra tất cả những điều tốt đẹp về King County. Bây giờ tôi muốn tạo báo cáo cho mọi quận trong tiểu bang của tôi. Dòng duy nhất trong tập lệnh cần được thay đổi là định nghĩa của display_county.Tạo báo cáo knitr

Tôi biết gói brew được thiết lập cho những thứ như thế này và tôi biết có sự chồng chéo giữa brewknitr, nhưng tôi không biết mình nên sử dụng cái gì.

This answer using Brew and Sweave sẽ hoạt động với các sửa đổi nhỏ, nhưng có cách nào tốt đẹp để bỏ qua brew không?

+0

Có một số lý do bạn không thể làm một vector của các hạt và sau đó lặp lại nó? –

+0

@BryanHanson Không phải tất cả, và đó chỉ là những gì tôi đã làm bằng cách sử dụng 'brew' như trong câu trả lời liên quan của Ramnath. Nhưng nó * cảm thấy * giống như thứ tôi nên làm chỉ trong 'knitr'. – Gregor

+0

Bạn đã thử nó trong 'knitr' chưa? Nếu nó hoạt động trong 'R' thông qua tương tác hoặc tập lệnh, tôi không thấy lý do tại sao bạn không thể làm điều đó với' knitr'. Tôi đã không bao giờ sử dụng 'brew' nhưng đã sử dụng' knitr' và 'sweave' rộng rãi, và tôi nghĩ rằng nó sẽ là có thể. –

Trả lời

5

Nếu tôi hiểu chính xác, bạn sẽ sử dụng cùng một tệp Rnw cho mỗi quận, do đó chỉ biến số display_county sẽ khác nhau đối với mỗi quận. Trước tiên tôi sẽ thực hiện cuộc gọi đến cơ sở dữ liệu để có được tất cả các tên của các hạt và lưu trữ chúng trong một vector (nói ... myCounties). Sau đó, báo cáo của bạn có thể được tạo ra với một kịch bản có chứa những điều sau đây:

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

Để xử lý các lỗi một cách hiệu quả hơn, bạn cũng có thể bọc gọi knit2pdf trên một tuyên bố tryCatch:

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

'c' là tên khá khủng khiếp đối với chỉ mục của vòng lặp vì nó cũng là một hàm khá quan trọng trong R. Bạn có thể xem xét đổi tên chỉ mục. – Dason

+0

True ... Sẽ chỉnh sửa. – JAponte

Các vấn đề liên quan