我正在使用R创建一个包,我也希望包含一个R Markdown文件。这个RMarkdown模板包含我的包中的函数,并通过knitr呈现给html文档。
目标是定期运行一个函数(通过cronjob),该函数呈现RMarkdown文件以生成每周报告。
如何将这些文件添加到R包(如.Rmd)并在进行函数调用时引用.Rmd来呈现所述模板?
答案 0 :(得分:36)
创建 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 库中安装软件包,因此您无法知道在哪里查看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处的内容很好。