在 RMarkdown 文档中包含 YAML 文件
Include YAML file in RMarkdown document
我有一个包含示例 YAML 文件的 RMarkdown 文档,当前格式为:
```{yaml}
name: r40_tidyverse
channels:
- conda-forge
- nodefaults
dependencies:
- r-base=4.0
- r-tidyverse
```
这会将 (knits) 呈现为 HTML,并带有漂亮的 YAML 语法突出显示。
针织结果
我想将其作为外部 YAML 文件包含在 envs/r40_tidyverse.yaml
中,而不是上述文件。我试过使用
```{yaml child="envs/r40_tidyverse.yaml"}
```
虽然这可以正确加载文件,但生成的 HTML 只是一个 <p></p>
元素,其中包含文件的内容。
针织结果
这是不可取的。
如何将外部 YAML 文件加载到 RMarkdown 文档中,并实现类似于直接包含 YAML 代码块时的语法高亮?
我认为最简单的方法是用内联 R 表达式读取外部文件,例如,
```yaml
`r xfun::file_string('envs/r40_tidyverse.yaml')`
```
请注意,您不应使用 ```{yaml}
(即不要将 {}
添加到 yaml
),因为这会将其含义更改为 knitr:
- 带花括号的意思是代码块,knitr语言引擎需要对代码块求值(但目前还没有
yaml
引擎,你的第一个例子只是偶然成功了)。
- 没有花括号表示普通代码块,不会被knitr处理。
我有一个包含示例 YAML 文件的 RMarkdown 文档,当前格式为:
```{yaml}
name: r40_tidyverse
channels:
- conda-forge
- nodefaults
dependencies:
- r-base=4.0
- r-tidyverse
```
这会将 (knits) 呈现为 HTML,并带有漂亮的 YAML 语法突出显示。
针织结果
我想将其作为外部 YAML 文件包含在 envs/r40_tidyverse.yaml
中,而不是上述文件。我试过使用
```{yaml child="envs/r40_tidyverse.yaml"}
```
虽然这可以正确加载文件,但生成的 HTML 只是一个 <p></p>
元素,其中包含文件的内容。
针织结果
这是不可取的。
如何将外部 YAML 文件加载到 RMarkdown 文档中,并实现类似于直接包含 YAML 代码块时的语法高亮?
我认为最简单的方法是用内联 R 表达式读取外部文件,例如,
```yaml
`r xfun::file_string('envs/r40_tidyverse.yaml')`
```
请注意,您不应使用 ```{yaml}
(即不要将 {}
添加到 yaml
),因为这会将其含义更改为 knitr:
- 带花括号的意思是代码块,knitr语言引擎需要对代码块求值(但目前还没有
yaml
引擎,你的第一个例子只是偶然成功了)。 - 没有花括号表示普通代码块,不会被knitr处理。