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

标签 r markdown 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...

这一切都很好。但我还想在文档末尾提供 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 -->

一旦有多个代码片段,这将变得相当乏味且容易出错。有什么办法可以遍历这些片段并自动打印出来?我希望我可以做类似的事情:
```{r snippetName, echo=F, comment="This is snippet 1:"}
# the code for this snippet
```

并在编织时以某种方式将以下结果替换到文档中的指定点:
This is snippet 1:
```{r snippetName, eval=F}
```

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

编辑 :这绝对不是重复的——如果你彻底阅读了我的问题,最后一个代码块显示我正在按照链接问题的答案所暗示的那样做(语法略有不同,这可能是造成困惑的根源?) .我正在寻找一种方法,不必为文档中的所有 20 多个片段手动写出最后一个代码块。

最佳答案

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

设置 echo=FALSE整个文档:opts_chunk$set(echo = FALSE)
然后把这个 block 放在最后打印所有代码:

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

 ```

这将打印所有 block 的代码。目前它们都显示在一个 block 中;我很想弄清楚如何放入 block 标签或其他一些标题......现在我从评论开始我的 block (无论如何可能不是一个坏主意)。

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

关于R Markdown - 打印文档中使用的所有代码片段的简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35512308/

相关文章:

r - 如何使用 knitr 添加引用书目

latex - Pandoc 从 LaTeX+BibLaTeX 到 Markdown 的转换

r - 如何使用pander将网格添加到表格中?

r - 在选定的环境中加载 r 包

r - R编程-将时间范围设置为今天

r - 如何将权重合并到似然函数中?

R代码块打印Markdown中的额外行

r - 如何在 RStudio & Markdown 生成的 Word 文档中添加分页符

Vim 数学语法高亮

Java double 组,R 变量为空值