在knitr中执行外部源并打印外部代码块

时间:2016-08-07 20:57:52

标签: r knitr

我使用ProjectTemplate和Knitr来生成报告。大多数分析存储在src目录中,而报告包含演示文稿R markdown。

我希望主要文本仅包含分析结果,并且文档附录包含分析中的一些代码块。我发现实现这一目标的唯一方法如下:

首先,在文档主体中运行实际分析:

```{r runanalysis, warning=FALSE, message=FALSE}
# run the analysis code to generate the objects

source('../src/rf-model-caret.R') 
```

其次,在附录中,需要两个编织块。第一个读取实际代码(并执行它)。第二个显示代码。

```{r analysis,  eval=TRUE, echo=FALSE}
knitr::read_chunk('../src/rf-model-caret.R')
```

```{r analysis2, ref.label="analysis", eval=FALSE, echo=TRUE}
```

这可行,但效率非常低,因为:

  • 分析必须运行两次 - 首先在主文档的源代码中运行,然后在附录中再次运行以生成代码。
  • 读取knitr chunk,然后立即再次引用它以显示代码

有没有更好的方法来实现在主文档中执行外部源并在附录中打印代码的目标?

1 个答案:

答案 0 :(得分:4)

你可以试试这个:

在主体中:

```{r runanalysis, code=readLines('../src/rf-model-caret.R'), echo=FALSE, eval=TRUE}
```

在附录中:

```{r runanalysis, code=readLines('../src/rf-model-caret.R'), echo=TRUE, eval=FALSE}
```