r - 如何获取 R Markdown 文件,例如 `source(' myfile.r')`?

标签 r markdown knitr

我经常有一个主要的 R Markdown 文件或 knit LaTeX 文件,我在其中一些其他 R 文件(例如,用于数据处理)。然而,我认为在某些情况下,让这些源文件成为它们自己的可重现文档(例如,R Markdown 文件不仅包含数据处理命令,而且还生成解释数据处理决策的可重现文档)是有益的)。

因此,我希望在我的主 R Markdown 文件中包含一个类似 source('myfile.rmd') 的命令。这将提取并获取 myfile.rmd 的 R 代码块内的所有 R 代码。当然,这会产生错误。

以下命令有效:

```{r message=FALSE, results='hide'}
knit('myfile.rmd', tangle=TRUE)
source('myfile.R')
```

如果需要输出,可以省略其中results='hide'。即,knitr 将 R 代码从 myfile.rmd 输出到 myfile.R

但是,它似乎并不完美:

  • 这会导致创建一个额外的文件
  • 如果需要控制显示,它需要出现在自己的代码块中。
  • 它不像简单的 source(...) 那样优雅。

所以我的问题是: 是否有更优雅的方式来获取 R Markdown 文件的 R 代码?

最佳答案

看来您正在寻找一句俏皮话。将其放入您的 .Rprofile 中怎么样?

ksource <- function(x, ...) {
  library(knitr)
  source(purl(x, output = tempfile()), ...)
}

但是,我不明白为什么您要 source() Rmd 文件本身中的代码。我的意思是 knit() 将运行本文档中的所有代码,如果您提取代码并以 block 的形式运行它,则当您 knit()< 时,所有代码将运行两次 这个文件(你自己在里面运行)。这两个任务应该是分开的。

如果您确实想运行所有代码,RStudio 已经使这变得相当简单:Ctrl + Shift + R。它基本上在幕后调用 purl()source()

关于r - 如何获取 R Markdown 文件,例如 `source(' myfile.r')`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10966109/

相关文章:

r - 缓慢的 data.frame 行分配

r - 无法指定带空格的列名

javascript - 如何使用 Javascript 正则表达式检测没有评论和 Markdown 的句子?

R:在 RStudio 中,如何将 knitr 输出到不同的文件夹以避免弄乱我的驱动器?

r - Kable 不再打印字幕

r - 在 dplyr 的汇总函数中使用过滤函数

r - 基于命名列表对 data.table 进行子集化

html - Pandoc:在从 Markdown 转换为 HTML 时将字体系列更改为 sans

wiki - 我应该为Wiki格式的文本文件使用标准的内容(MIME)类型吗?

r - 通过电子邮件或其他安全方法发送/共享敏感的 R slidify 演示文稿