gpt4 book ai didi

r - 在另一个文档中包含一个 Markdown 文档中的特定 block

转载 作者:行者123 更新时间:2023-12-04 09:28:45 25 4
gpt4 key购买 nike

我想将一个 Markdown 文档的特定块中的代码包含到第二个 Markdown 文档中。我想通过按名称引用块来做到这一点(请不要 hacky references to line-numbers )。我不想在 child 中运行所有代码,因为其中一些相当耗时。

这是我尝试过的。我们有 read_chunk 用于包括普通 R Markdown 文档中的脚本。有 run_chunk 但不清楚这是否可以与外部文档一起使用(到目前为止我还没有运气)。

我们可以做 this让整个 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

solution复制是使用 eval = FALSE, echo = FALSE在子文档的块选项中:
```{r test-child-2, eval = FALSE, echo = FALSE}
2+2
dnorm(0)
```

这给出了所需的结果:
2+2
## [1] 4
dnorm(0)

但这并不方便更改子文档中的块,因为子文档中的其他块需要该块,而且我不想每次运行主文档时都更改子文档中的几个块,这对重现性不利。

我怎样才能只得到块 test-child-2来自 test-child.Rmd进入 test-main.Rmd通过引用块名称(并且没有重复或摆弄块选项)?

我正在寻找一个可以调用的函数 child_chunk我可以在其中给出子文档名称和块名称,并在主文档中对其应用块选项,这些选项独立于子文档中的块选项。

或者是将代码移入 R 的唯一解决方案脚本文件并在两个 Markdown 文档之间共享它们?

最佳答案

我会尝试 purl -ing 原始子文档,然后从代码缠结文件中读取块,然后您可以将其删除。

这是test-main.Rmd

```{r echo=FALSE}
invisible(purl("test-child.Rmd", output="temp", quiet=TRUE))
read_chunk("temp")
```

```{r ref.label='test_child_2'}
```

```{r echo=FALSE}
unlink("temp")
```

我修改了你的 test-child.Rmd使用不同的标签,因为您的标签不适用于我的机器:

你好呀。我是个 child 。
```{r test_child_1}
1+1
dnorm(0)
```

```{r test_child_2}
2+2
dnorm(0)
```
knit('test-main.Rmd')的输出是这样的:
```r
2+2
```


```
## [1] 4
```

```r
dnorm(0)
```

```
## [1] 0.3989
```

关于r - 在另一个文档中包含一个 Markdown 文档中的特定 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24466121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com