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

How to include RMarkdown file in r package?

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

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

如何将此类文件添加到 R 包(如 .Rmd)并在调用函数以呈现所述模板时引用 .Rmd,特别是因为使用 use_data(myrmarkdown.Rmd) 无法实现想要的结果。

当您创建 R 包时,您将在包的根目录中有一个目录树,其中包含以下内容(以及其他内容):DESCRIPTIONNAMESPACE,以及 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

(其他 files/directories 是在此过程中创建的,为简单起见,我将忽略它们。)

你需要知道的最后一条信息是"how do I access this file once it is installed?"由于一些系统将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-rendered 文档的 company-specific 模板。也就是说,我寻找 "include" 文件来个性化 LaTeX,以便呈现的 PDF 具有 headers/footers 并且按照我们想要的方式设置样式。此步骤需要编写一个函数来替换 Rmd YAML header 中的 pdf_document(例如),但在 rmarkdown.rstudio.com.

中对此进行了很好的介绍