2015-05-21 40 views
10

Tôi đang trong quá trình tạo gói trong R và tôi cũng muốn bao gồm tệp R Markdown. Mẫu RMarkdown này chứa các hàm từ gói của tôi và được trả về một tài liệu html qua knitr.Cách đưa tệp RMarkdown vào gói r?

Mục tiêu là thường xuyên chạy hàm (thông qua cronjob) để hiển thị tệp RMarkdown để tạo báo cáo hàng tuần.

Làm cách nào để thêm các tệp như vậy vào gói R (như .Rmd) và tham chiếu .Rmd khi thực hiện cuộc gọi hàm để hiển thị mẫu đã nói?

+1

Tôi đã đóng cửa sổ này vì nó thực sự là một câu hỏi gấp đôi về 'làm cách nào để đưa $ FOO' vào gói của tôi và câu trả lời luôn là 'dưới' inst/''. –

+1

@DirkEddelbuettel Mặc dù điều đó có thể hiển nhiên với bạn, vì bạn có kiến ​​thức siêu cấu trúc hơn, câu trả lời dưới đây chính xác là những gì tôi đang tìm kiếm và bài đăng được liên kết sẽ không trả lời được câu hỏi của tôi. Đặc biệt, việc truy cập một Rmd (khác với cách gọi đơn giản là 'data (x)' là khóa. –

+1

@DanielEgan, vui vì nó đã giúp nhưng trang web thực sự không tốt hơn khi chúng ta viết cùng một thứ X lần dưới các nhãn khác nhau. , câu trả lời về cơ bản là "sử dụng' system.file() '" - vì vậy chỉ cần thử ví dụ: 'system.file (" doc "," knitr-intro.Rmd ", package =" knitr ")' mà * không có vấn đề và cách bạn cài đặt knitr * sẽ cung cấp cho bạn đường dẫn đầy đủ của tệp - vì nó xuất phát từ 'inst/doc/knitr-intro.Rmd' và R có thể tính toán những thứ này. Đây là tài liệu khá hay (nếu khó tìm –

Trả lời

20

Khi bạn đang tạo một R gói, bạn sẽ có một cây thư mục chứa những điều sau đây (trong số những người khác) trong thư mục gốc của gói: DESCRIPTION, NAMESPACE, và R/ thư mục. Nếu bạn cũng có một thư mục inst/, thì mọi thứ trong thư mục đó được sao chép đúng nguyên văn vào trong thư mục gói của bạn, ngoại trừ inst/.

Ví dụ, nếu thư mục gói của bạn trông như thế này:

+- DESCRIPTION 
+- NAMESPACE 
+- inst/ 
| \- rmd/ 
|  \- file.Rmd 
\- R/ 
    +- file1.R 
    +- file2.R 
    \- file3.R 

Sau đó, khi bạn xây dựng gói và cài đặt nó, bạn sẽ tìm thấy trong những điều sau đây trong thư viện gói của bạn:

+- DESCRIPTION 
+- INDEX 
+- NAMESPACE 
+- rmd/ 
| \- file.Rmd 
\- R/ 
    +- packagename 
    +- packagename.rdb 
    \- packagename.rdx 

(Các tệp/thư mục khác được tạo trong quá trình này, tôi bỏ qua chúng để đơn giản.)

Thông tin cuối cùng bạn cần biết là "làm cách nào để truy cập thứ là tập tin khi nó được cài đặt? " Kể từ khi một số hệ thống cài đặt thư viện R trong các thư mục khác nhau, và trên đầu trang của rằng người dùng thường cài đặt các gói trong một R thư viện cá nhân, bạn không thể biết một tiên nghiệm nơi để xem xét Nhập system.file:

system.file("rmd/file.Rmd", package="packagename") 
## [1] "c:/R/R-3.1.3/library/packagename/rmd/file.Rmd" 

này có thể được sử dụng cho toàn bộ tệp Rmd. Tôi sử dụng nó cho các mẫu công ty cụ thể cho các tài liệu được hiển thị Rmd. Tức là, tôi tìm các tệp "include" để cá nhân hóa LaTeX để tệp PDF được hiển thị có đầu trang/chân trang và được tạo kiểu theo cách chúng tôi muốn. Bước này yêu cầu viết một hàm thay thế số pdf_document (ví dụ) trong tiêu đề Rmd YAML, nhưng được bảo vệ tốt tại rmarkdown.rstudio.com.

+1

cảm ơn rất nhiều @ r2evans, điều này rất hữu ích và chỉ là câu trả lời tôi đang tìm kiếm, đánh giá cao nó! –

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