【问题标题】:How to include RMarkdown file in r package? [duplicate]如何在 r 包中包含 RMarkdown 文件? [复制]
【发布时间】:2015-05-21 14:48:54
【问题描述】:

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

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

如何将此类文件添加到 R 包(如 .Rmd)并在进行函数调用以呈现所述模板时引用 .Rmd,特别是因为使用 use_data(myrmarkdown.Rmd) 不会达到预期的结果。

【问题讨论】:

  • @DirkEddelbuettel 虽然这对您来说可能很明显,但由于您拥有更多的结构化元知识,下面的答案正是我正在寻找的,而链接的帖子不会回答我的问题。特别是,访问 Rmd(与简单地调用 data(x) 不同是关键。
  • @DanielEgan,很高兴它有所帮助,但是当我们在不同的标签下写 X 次相同的东西时,网站确实并没有变得更好。为此,答案基本上是“使用system.file()”——所以只需尝试例如system.file("doc", "knitr-intro.Rmd", package="knitr"),它无论您在何处以及如何安装knitr都会为您提供文件的完整路径——如它来自inst/doc/knitr-intro.Rmd,然后 R 可以计算这些东西。这是有据可查的(如果一开始很难找到)。
  • 我投票重新打开是因为 1) 这个用例与重复的用例不同,因为该文件必须由 path 访问,而不是使用 data(),2) 链接问题的答案是模糊和过度依赖阅读外部资源。虽然阅读链接答案建议的来源可能会帮助您弄清楚该怎么做,但他们肯定不会回答这个问题。
  • 我同意这与现有问题有很大不同。这种回应会让 SO 对新用户产生敌意。

标签: r knitr r-markdown


【解决方案1】:

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

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

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

【讨论】:

  • 非常感谢@r2evans,这很有帮助,正是我正在寻找的答案,不胜感激!
  • @Konrad,我不介意编辑(我喜欢它的直接性),但我从来没有遇到过在 Windows 上使用正斜杠甚至混合斜杠以及正斜杠的问题是所有其他操作系统的正确答案(我使用过 R)。一旦我知道 Windows 的 R 可以很好地使用正斜杠,我很少会在我的路径中放置反斜杠(并且经常覆盖 fsep="/"
  • @r2evans 很高兴知道,我认为这可能有问题,但如果您从未遇到任何问题,我可能是错的。我总是尝试使用file.path,只是为了安全起见,但它可能过于谨慎
猜你喜欢
  • 1970-01-01
  • 2021-08-20
  • 1970-01-01
  • 2017-01-13
  • 2015-12-05
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多