如何在r包中包含RMarkdown文件?

时间:2015-05-21 14:48:54

标签: r knitr r-markdown

我正在使用R创建一个包,我也希望包含一个R Markdown文件。这个RMarkdown模板包含我的包中的函数,并通过knitr呈现给html文档。

目标是定期运行一个函数(通过cronjob),该函数呈现RMarkdown文件以生成每周报告。

如何将这些文件添加到R包(如.Rmd)并在进行函数调用时引用.Rmd来呈现所述模板?

1 个答案:

答案 0 :(得分:36)

创建 R 包时,您将在包的根目录中包含以下(以及其他)目录树:DESCRIPTIONNAMESPACER/目录。如果您还有一个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 库中安装软件包,因此您无法知道在哪里查看Enter { {1}}:

system.file

这可以用于整个Rmd文件。我将它用于Rmd渲染文档的公司特定模板。也就是说,我寻找“包含”文件来个性化LaTeX,以便渲染的PDF具有页眉/页脚,并按照我们想要的方式设置样式。此步骤需要编写一个函数来替换Rmd YAML标头中的system.file("rmd", "file.Rmd", package = "packagename") ## [1] "c:/R/R-3.1.3/library/packagename/rmd/file.Rmd" (例如),但rmarkdown.rstudio.com处的内容很好。