You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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"参数,明确指定输出格式为源文件。
  • 检查模板参数声明:确保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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:57:49