R Markdown –打印文档中使用的所有代码段的简洁方法

Sor*_*tad 4 markdown r pandoc

我正在用R Markdown编写报告,不想在报告的主体中打印我的任何R代码-我只想显示图,计算要替换为内联文本的变量,有时显示少量的原始R输出。因此,我这样写:

In the following plot, we see that blah blah blah:
```{r snippetName, echo=F}
plot(df$x, df$y)
```

Now...
Run Code Online (Sandbox Code Playgroud)

一切都很好。但是我也想在文档末尾提供R代码,以供任何好奇的人看看它是如何产生的。现在,我必须手动编写如下内容:

Here is snippet 1, and a description of what section of the report
this belongs to and how it's used:
```{r snippetName, eval=F}
```
Here is snippet 2:
```{r snippetTwoName, eval=F}
```
<!-- and so on for 20+ snippets -->
Run Code Online (Sandbox Code Playgroud)

一旦存在多个代码片段,这将变得非常乏味且容易出错。有什么办法可以遍历代码片段并自动打印出来?我希望我可以做类似的事情:

```{r snippetName, echo=F, comment="This is snippet 1:"}
# the code for this snippet
```
Run Code Online (Sandbox Code Playgroud)

并在编织后的指定点以某种方式将以下结果替换到文档中:

This is snippet 1:
```{r snippetName, eval=F}
```
Run Code Online (Sandbox Code Playgroud)

我想我可以编写一些后处理代码来扫描.Rmd文件,找到所有代码片段,然后使用正则表达式或类似的东西提取代码(我似乎记得有些选项文件可用于将命令注入到pandoc程序?),但我希望可能有一些更简单的方法。

编辑:这绝对不是重复的-如果您仔细阅读了我的问题,最后一个代码块将向我显示所链接问题的答案所暗示的含义(语法略有不同,这可能是造成混淆的原因? )。我正在寻找一种不必手动为文档中所有20多个代码片段写出最后一个代码块的方法。

Don*_*onJ 6

这在knitr中是可行的,无需使用pandoc。基于Yihui在https://github.com/yihui/knitr-examples/blob/master/073-code-appendix.Rnw发布的示例

echo=FALSE在整个文档中设置:opts_chunk$set(echo = FALSE)

然后将此块放在最后以打印所有代码:

 ```{r show-code, ref.label=all_labels(), echo = TRUE, eval=FALSE}

 ```
Run Code Online (Sandbox Code Playgroud)

这将为所有块打印代码。目前,它们全部都显示在一个块中。我很想弄清楚如何放入大块标签或其他标头...现在,我以注释开始我的大块(在任何情况下都可能不是一个坏主意)。

更新:仅显示评估的块,请使用: ref.label = all_labels(!exists('engine'))-参阅问题40919201