gpt4 book ai didi

r - 评估 YAML header 中的 R 代码

转载 作者:行者123 更新时间:2023-12-04 10:11:25 31 4
gpt4 key购买 nike

考虑以下 Rmd 文件,

---
title: "Untitled"
author: "baptiste"
date: "`r Sys.Date()`"
output: html_document
test: "`r paste('_metadata.yaml')`"
---

```{r}
cat(rmarkdown::metadata$test)
```

enter image description here

在传递给 pandoc 以转换为 md 和 html 之前,日期由 R 处理(编织)。自定义字段 test ,但是,未评估。

有什么不同?可以强制 knitr/rmarkdown 评估 yaml header 中的任意字段吗?

注意:实际目的不仅仅是 print()像这个虚拟示例中的文件名,但要加载包含元数据(作者信息)的外部 yaml 文件,用 R 处理它,并输出一个将被注入(inject)到文档中的字符串。

最佳答案

标准元数据字段 data和您的自定义字段 test实际上并没有区别对待。这段代码:

---
title: "Untitled"
author: "baptiste"
date: "`r Sys.Date()`"
output:
html_document:
keep_md: yes
test: "`r paste('_metadata.yaml')`"
---

```{r}
cat(rmarkdown::metadata$date)
cat(rmarkdown::metadata$test)
```
导致以下输出:
enter image description here
如您所见,还有 date没有被评估。我在 rmarkdown 中没有找到任何功能或 knitr包。但是以下简单函数至少对您的简单示例有用:
---
title: "Untitled"
author: "baptiste"
date: "`r Sys.Date()`"
output:
html_document:
keep_md: yes
test: "`r paste('_metadata.yaml')`"
---

```{r}
eval_meta <- function(x) eval(parse(text = gsub("`|r", "", x)))
eval_meta(rmarkdown::metadata$date)
eval_meta(rmarkdown::metadata$test)
```
enter image description here
但是,这是否适用于您更复杂的情况是另一个问题。

关于r - 评估 YAML header 中的 R 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45646135/

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