如何用purrr循环适配quarto_render语法批量生成Quarto文档?
适配Quarto批量生成文档的解决方案
问题背景
此前使用R的purrr循环结合rmarkdown::render批量生成文档的代码如下:
purrr::walk(.x = DataSet$Column, ~ rmarkdown::render( input = "MarkdownTemplate.rmd", output_file = glue::glue("Title{.x}.Rmd"), params = list(Column = {.x})))
该代码基于RMarkdown模板,以数据集列作为参数批量生成多个文档。尝试适配Quarto的quarto_render语法,使用qmd文件作为输入输出时失败,尝试的代码如下:
library(tidyverse) library(tinytex) library(bookdown) library(openxlsx) library(knitr) library(quarto) scalelist = read.xlsx("AbridgedScaleSummary.xlsx") purrr::walk( .x = scalelist$abbreviation, ~ quarto_render( input = "QuartoProjTemplate.qmd", output_file = glue::glue("Scale-- {.x}.qmd"), execute_params = list(abbreviation = {.x})))
适配建议
- 修正参数传递语法:Quarto的
execute_params不需要用大括号包裹参数值,直接传递变量即可。把list(abbreviation = {.x})修改为list(abbreviation = .x),大括号是RMarkdown的专属语法,Quarto不兼容。 - 明确输出文件类型:
- 若要生成渲染后的成品文档(如HTML/PDF),将
output_file的后缀改为.html或.pdf,无需额外指定output_format; - 若要生成替换参数后的qmd源文件,需添加
output_format = "qmd"参数,明确指定输出格式为源文件。
- 若要生成渲染后的成品文档(如HTML/PDF),将
- 检查模板参数声明:确保
QuartoProjTemplate.qmd开头已正确声明参数,示例如下:--- title: "Scale Report" params: abbreviation: "" --- - 验证单个渲染流程:先单独测试一次
quarto_render确认参数传递正常,避免批量循环中出错难以排查,示例代码:quarto_render( input = "QuartoProjTemplate.qmd", output_file = "Scale-- test.qmd", execute_params = list(abbreviation = "test_val"), output_format = "qmd" ) - 确认文件路径正确性:确保模板文件
QuartoProjTemplate.qmd在当前工作目录下,可通过getwd()查看当前目录,或使用绝对路径指定输入文件。
内容的提问来源于stack exchange,提问作者MQON
相关产品推荐
相关产品推荐

