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

Ale*_*anz 20 r knitr r-markdown

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

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

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

r2e*_*ans 40

当创建一个ř包,则必须含有在包的根目录下面的(除了别的以外)的目录树:DESCRIPTION,NAMESPACER/目录.如果您还有一个inst/目录,那么该目录中的所有内容将逐字复制到您的包目录中,不包括inst/.

例如,如果您的包目录如下所示:

+- DESCRIPTION
+- NAMESPACE
+- inst/
|  \- rmd/
|     \- file.Rmd
\- R/
   +- file1.R
   +- file2.R
   \- file3.R
Run Code Online (Sandbox Code Playgroud)

然后,当您构建软件包并进行安装时,您将在软件包库中找到以下内容:

+- DESCRIPTION
+- INDEX
+- NAMESPACE
+- rmd/
|  \- file.Rmd
\- R/
   +- packagename
   +- packagename.rdb
   \- packagename.rdx
Run Code Online (Sandbox Code Playgroud)

(在此过程中会创建其他文件/目录,为简单起见,我忽略了它们.)

您需要知道的最后一条信息是"安装后如何访问此文件?" 由于某些系统将R库安装在不同的目录中,并且用户经常在个人R库中安装软件包,因此您无法知道在哪里查看Enter system.file:

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

这可以用于整个Rmd文件.我将它用于Rmd渲染文档的公司特定模板.也就是说,我寻找"包含"文件来个性化LaTeX,以便渲染的PDF具有页眉/页脚,并按照我们想要的方式设置样式.这一步需要编写一个替换pdf_documentRmd YAML头中(例如)的函数,但这在rmarkdown.rstudio.com上有很好的说明.

  • 非常感谢@r2evans,这非常有帮助,正是我正在寻找的答案,谢谢! (3认同)