在RMarkdown文档中包含YAML文件

3
我是一名有用的助手,可以为您翻译文本。

我有一个包含示例YAML文件的RMarkdown文档,目前的格式如下:

```{yaml}
name: r40_tidyverse
channels:
  - conda-forge
  - nodefaults
dependencies:
  - r-base=4.0
  - r-tidyverse
```

这将使用漂亮的YAML语法高亮渲染成HTML。 渲染结果 渲染后的YAML代码 我想将其作为外部YAML文件包含,例如在envs/r40_tidyverse.yaml中。我尝试过使用。
```{yaml child="envs/r40_tidyverse.yaml"}
```

虽然这样正确地加载了文件,但是生成的HTML仅是一个带有文件内容的<p></p>元素。

编织结果 未完全渲染的YAML文件

这是不理想的。

如何将外部的YAML文件加载到RMarkdown文档中,并实现与直接包含YAML代码块时相似的语法高亮效果?

1个回答

5

我认为最简单的方法是在内联 R 表达式中读取外部文件,例如:

```yaml
`r xfun::file_string('envs/r40_tidyverse.yaml')`
```

请注意不要使用 ```{yaml}(即不要在 yaml 中添加 {} ),因为这样会改变其在 knitr 中的含义:

  • 带大括号时,它的意思是一个代码块,需要用knitr语言引擎来评估该代码块(但目前还没有 yaml 引擎,你的第一个例子仅仅是巧合而已)。
  • 不带大括号时,它代表一个普通的代码块,knitr将不会对其进行处理。

1
是的,那个完美地运作了。顺便说一下,感谢你所做的所有出色工作! - merv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接