2015-05-21 3 views
10

Я в процессе создания пакета в R, и я также хочу включить файл R Markdown. Этот шаблон RMarkdown содержит функции из моего пакета и отображается в html-документе через knitr.Как включить файл RMarkdown в r-пакет?

Целью является регулярное выполнение функции (через cronjob), которая отображает файл RMarkdown для создания еженедельных отчетов.

Как можно добавить такие файлы в пакет R (например. Rmd) и ссылаться на .Rmd при выполнении вызова функции для визуализации указанного шаблона?

+1

Я закрыл это, поскольку это действительно как двойной из дюжины существующих вопросов относительно «как включить $ FOO» в мой пакет, и ответ всегда «ниже» inst/'. –

+1

@DirkEddelbuettel Хотя это может быть очевидно для вас, поскольку у вас есть более структурные метазнания, ответ ниже был именно тем, что я искал, и связанная почта не ответила бы на мой вопрос. В частности, доступ к Rmd (отличный от простого вызова 'data (x)' был ключевым. –

+1

@ DanielEgan, рад, что это помогло, но сайт действительно не улучшается, когда мы пишем те же самые вещи X раз под разными ярлыками. , ответ по существу «используется» system.file() '» - так что попробуйте, например, 'system.file (" doc "," knitr-intro.Rmd ", package =" knitr ")' который * независимо от того, где и то, как вы установили knitr *, предоставит вам полный путь к файлу - поскольку он исходит из 'inst/doc/knitr-intro.Rmd', а R может затем вычислить эти вещи. Это довольно хорошо документировано (если трудно найти сначала). –

ответ

20

Когда вы создаете пакет R, вы будете иметь дерево каталогов, содержащее следующие (среди прочих) в корневой директории пакета: DESCRIPTION, NAMESPACE и каталог R/. Если у вас также есть каталог inst/, то все в пределах этого каталога скопировано дословно в каталог вашего пакета, за исключением inst/.

Например, если ваш каталог пакета выглядит следующим образом:

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

Затем, когда вы собираете пакет и установить его, вы найдете в следующем в вашем пакете библиотеки:

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

(Другие файлы/каталоги созданы во время процесса, я игнорирую их для простоты.)

Последней информацией, которую вам нужно знать, является «как мне получить доступ к это файл после его установки? " Так как некоторые системы установить библиотеку R в различных каталогах, и на вершине, что пользователи часто устанавливают пакеты в пределах личной R библиотеки, вы не можете знать заранее, где искать Введите system.file:

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

Это может будет использоваться для всего файла Rmd. Я использую его для шаблонов для конкретных компаний для документов Rmd. То есть, я ищу файлы «включить», чтобы персонализировать LaTeX, чтобы рендеринг PDF имел верхние/нижние колонтитулы и был разработан так, как мы хотим. Этот шаг требует записи функции, которая заменяет pdf_document (например) в заголовке Rmd YAML, но это хорошо покрыто rmarkdown.rstudio.com.

+1

спасибо большое @ r2evans, это было очень полезно, и это был только тот ответ, который я искал, ценю! –

Смежные вопросы