我正在寻求一种将 Rmd 文档(包含对各种“子”文件的引用)呈现到没有这些依赖关系的独立R Notebook 的方法。
目前,.Rmd 代码块位于许多 .R、.py 和 .sql 文件中,并在报告中使用
```{r extraction, include=FALSE, cache=FALSE}
knitr::read_chunk("myscript.R")
```
其次是
```{r chunk_from_myscript}
```
如此处所述。
我这样做是为了避免代码重复并允许单独运行源文件,但是这些代码块只能通过调用knit
或render
(何时read_chunk
运行并且代码块可用)在报告中执行。
有没有办法在只填充这些块的情况下分拆 Rmd(在编织之前)?
这个功能
rmarkdown::render("report.Rmd", clean = FALSE)
extraction
几乎到达那里,因为它在删除和填充时留下了降价文件,chunk_from_myscript
但是由于这些文件是直接降价文件,因此这些块不再可执行并且缺少块选项。它显然也不包括eval=TRUE, echo=FALSE
运行生成的笔记本所需的块。
我也看过,knitr::spin
但这意味着将报告的内容传播到每个源文件,并不是非常理想。
代表
报告.Rmd
---
title: 'Report'
---
```{r read_chunks, include=FALSE, cache=FALSE}
knitr::read_chunk("myscript.R")
```
Some documentation
```{r chunk_from_myscript}
```
Some more documentation
```{r chunk_two_from_myscript, eval=TRUE, echo=FALSE}
```
我的脚本
#' # MyScript
#'
#' This is a valid R source file which is formatted
#' using the `knitr::spin` style comments and code
#' chunks.
#' The file's code can be used in large .Rmd reports by
#' extracting the various chunks using `knitr::read_chunk` or
#' it can be spun into its own small commented .Rmd report
#' using `knitr::spin`
# ---- chunk_from_myscript
sessionInfo()
#' This is the second chunk
# ---- chunk_two_from_myscript
1 + 1
期望的输出
笔记本.Rmd
---
title: 'Report'
---
Some documentation
```{r chunk_from_myscript}
sessionInfo()
```
Some more documentation
```{r chunk_two_from_myscript, eval=TRUE, echo=FALSE}
1 + 1
```