【问题标题】:Programatically generate R markdown code chunk以编程方式生成 R markdown 代码块
【发布时间】:2018-04-21 18:59:52
【问题描述】:

我正在创建一个教程,其中涉及告诉读者将什么放入我们称为utils.R 的文件中。用户将获得作为 HTML 文件的教程。在整个教程中utils.R 发生变化,Rmd 文档使用utils.R 中的代码,因为它存在于教程的那个阶段。在渲染过程中,我希望代码块使用source("utils.R"),因为它存在于教程的那个阶段。我正在寻找一种方法...

1。将代码块的内容写入文件。比如……

```{r utils_1}
summary(cars)
median(cars$speed)
```

有没有办法将utils_1 中的代码写入文件?

2。从文本字符串创建格式良好的代码块(我知道如何将其写入文件)。比如……

z <- "summary(cars)\nmedian(cars$speed)"
write(z, "utils.R")

将生成utils.R,但有没有办法将z 转换为格式正确的代码块。

我可以创建多个版本的utils.R 并使用echo=F 隐藏我正在后台加载它,但这似乎很痛苦。

【问题讨论】:

  • 你能包含一些最小的代码吗?我无法完全理解您要达到的目标。用户会在 RStudio 中逐块与此文件进行交互,还是希望他们编织整个文档并查看输出?
  • 这应该有助于第二部分:stackoverflow.com/q/38818492/7347699
  • 您仍然需要发布完整的代码。目前尚不清楚哪些代码将写入文件。因此,请发布一个完整的示例,展示您希望最终结果的样子,即使它不起作用,并且有人能够修复它以使其正常工作。
  • 对于交互式内容,请考虑使用 Jupyter notebook 而不是 Rmd 文件。

标签: r r-markdown knitr


【解决方案1】:

不确定这是否是您要查找的内容,但您可以使用 child 选项从另一个文件生成它们。我将它用于自动报告,因为它有助于保持主 Rmd 更简单

```{r child=utils.R}
```

不过,我经常将子代码放在 YAML 中,然后调用它(我猜是口味问题......):

---
params:
    utils: "utils.R"
---


```{r child=params$utils}
```

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-21
    • 2021-09-17
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多