如何在Quarto文档的YAML头中向knitr传递dev.args列表参数
如何在Quarto文档的YAML头中向knitr传递dev.args列表参数
你碰到的问题其实是因为YAML语法和R的语法不兼容——不能直接在YAML头里写R的list()函数调用,得用YAML本身的映射格式来定义这个参数列表才行。
给你两种可行的写法:
方法一:纯YAML映射格式
这是最常规的写法,适合传递普通的键值对(数值、字符串等):
--- title: "My Document" format: html knitr: opts_chunk: dev.args: a: 1 b: 2 c: 3 ---
knitr会自动把这个YAML结构转换成对应的R列表,直接供图形设备使用。
方法二:嵌入R表达式(适合含R特定对象的场景)
如果你的dev.args需要包含R特有的对象(比如函数调用、特殊常量),可以用!expr标记告诉Quarto这里要解析成R代码:
--- title: "My Document" format: html knitr: opts_chunk: dev.args: !expr list(a = 1, b = sqrt(4), c = as.factor("category")) ---
验证参数是否生效
你可以在文档里加个代码块,确认参数是否正确传递:
```{r} # 查看当前dev.args的设置 knitr::opts_chunk$get("dev.args")
运行这个代码块后,就能看到你设置的参数列表了。 备注:内容来源于stack exchange,提问作者António Duarte
相关产品推荐
相关产品推荐

