我想将一个Markdown文档中特定代码块的代码包含在第二个Markdown文档中。我希望通过引用代码块的名称来实现此操作(请勿使用行号的hacky引用)。我不想在子文档中运行所有代码,因为其中一些代码非常耗时。
我尝试了以下方法:read_chunk
可以包含Markdown文档中的纯R
脚本;虽然有run_chunk
,但不清楚是否可与外部文档一起使用(到目前为止没有成功)。
我们可以 这样做 来获取另一个完整的Markdown文档以在其中运行:
```{r child='first.Rmd'}
```
但是我该如何将子文档中的一个特定块插入到另一个文档中?以下是一个小例子:
这是test-main.Rmd
```{r pick-up-the-kid, child='test-child.Rmd'}
```
这是test-child.Rmd
文件
Hi, there. I'm a child.
```{r test-child-1}
1+1
dnorm(0)
```
```{r test-child-2}
2+2
dnorm(0)
```
当我们运行 test-main.Rmd
时,会得到以下结果:
Hi, there. I’m a child.
1+1
## [1] 2
dnorm(0)
## [1] 0.3989
2+2
## [1] 4
dnorm(0)
## [1] 0.3989
有一个方法几乎可以做到这一点,那就是ref.label
。如果我们这样编辑test-main.Rmd
:
```{r pick-up-the-kid, child='test-child.Rmd', ref.label='test-child-2'}
```
输出了所需的块,但是它是重复的,这样不好:
Hi, there. I’m a child.
2+2
## [1] 4
dnorm(0)
## [1] 0.3989
2+2
## [1] 4
dnorm(0)
## [1] 0.3989
处理重复的一种解决方案是在子文档的代码块选项中使用 eval = FALSE, echo = FALSE
:
```{r test-child-2, eval = FALSE, echo = FALSE}
2+2
dnorm(0)
```
从而获得所需的结果:
2+2
## [1] 4
dnorm(0)
但是,在子文档中更改该块不太方便,因为其他块需要该块,并且我不想每次运行主文档时更改子文档中的少数几个块,这对可重复性不利。
如何通过引用块名称(而无需重复或调整块选项)从test-child.Rmd
中仅获取 test-child-2
块到 test-main.Rmd
中?
我正在寻找一个名为child_chunk
的函数,它可以在主文档中给出子文档名称和块名称,并应用独立于子文档中块选项的块选项。
或者,唯一的解决方案是将代码移动到 R
脚本文件中并在两个 markdown 文档之间共享吗?
source_rmd_chunks()
的函数,它可以根据代码块标签名称从RMD文件中获取代码块。链接:https://gist.github.com/brshallo/e963b9dca5e4e1ab12ec6348b135362e - Bryan Shalloway