r-`bookdown`/`rmarkdown`/`knitr`:如何进行非代码顺序处理



我的bookdown项目按程序进行如下:

  1. 读取原始数据-生成各种统计数据
  2. 数据预处理(对数化、归一化、插补(-生成各种图,用于监测所产生的群体水平缺陷
  3. 用于分析QC的主成分分析-生成主成分分析和负载主导数据点的图
  4. 差异表达分析-生成火山图和具有显著差异表达特征的图
  5. 对来自4。在各种生物本体系统中-为丰富的类别生成示例条形图

我使用bookdown很好地集成了分析和叙述,能够有效地动态丢弃临时(相当大的(数据集/ggplot2对象(转换前/转换后数据等(。

HOWEVER:目标受众大多/只对4感兴趣&5.,引导我进入渴望的以下结构:

4.,5.,附录(1.,2.,3.(

除了预计算1.-5之外,还有其他方法吗。然后按目标顺序重新访问——如果可能的话,我宁愿避免在内存中累积所有ggplot2对象。

您可以执行以下操作:

  1. 将步骤1-3和4-5拆分为两个特定的*.Rmd文件,如123.Rmd45.Rmd
  2. 45.md的开头添加一个代码块,将123.Rmd编织为123.md

```{r knit123, include = FALSE} knitr::knit("123.Rmd", output = "123.md") ```

这将在Markdown中生成步骤1-3的输出,并使由此创建的所有对象可用于步骤4-5。

  1. 45.Rmd的末尾添加一个代码块,读取123.md打印其内容:

```{r include123, results = "asis"} cat(readLines("123.md"), sep = "n") ```

results = "asis"将阻止任何进一步的处理,因为它已经是有效的Markdown。

  1. 45.Rmd编织成您想要的任何目标格式

编辑(1(

TL;DR:不要在整个步骤4-5中将步骤1-3中的对象存储在内存中以便随后打印,而是先打印并将结果存储在磁盘上。


编辑(2(:

既然你明确提到了bookdown:如果有一个YAML选项在编织过程结束时包括一个Markdown文件(类似于include-after: 123.md(,我不会感到惊讶;但我不太确定,我也懒得自己查

最新更新