以编程方式生成R降价代码块

时间:2018-04-21 18:59:53

标签: r r-markdown knitr

我正在创建一个教程,该教程涉及告诉读者将哪些内容放入文件中,我们会调用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来隐藏我在幕后加载的内容,但这似乎很痛苦。

1 个答案:

答案 0 :(得分:0)

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

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

我经常把孩子的代码放在YAML中,然后把它称之为(我猜的口味......):

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


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