如何在Quarto中基于iris数据集动态生成带表格的标签页?
title: iris tabset
format:
html:
df-print: paged
knitr:
opts_chunk:
echo: false
library(tidyverse) library(glue)
::: {.tabset}
purrr::walk(unique(iris$Species), function(species) { # 生成当前物种的标签页标题 cat(glue("## {species}\n\n")) # 筛选并打印对应物种的表格 iris %>% filter(Species == species) %>% print(row.names = FALSE) cat("\n\n") })
:::
## 方案二:修复knit_child版本 如果坚持使用`knit_child`,需要通过字符串插值将`species`值直接传入子代码块,避免环境变量传递问题: ```quarto --- title: iris tabset format: html: df-print: paged knitr: opts_chunk: echo: false --- ```{r setup, include=FALSE} library(tidyverse) library(glue)
::: {.tabset}
res <- purrr::map_chr(unique(iris$Species), \(species) { knitr::knit_child(text = glue(" ## {species} ```{{r}} #| echo: false iris %>% filter(Species == '{species}') ``` "), envir = environment(), quiet = TRUE) }) cat(res, sep = '\n')
:::
### 关键修改说明 - 使用`glue`实现字符串动态插值,确保二级标题和筛选条件中的物种名称正确注入 - 方案一通过`walk`直接生成内容,避免子环境变量传递的复杂问题,代码更简洁易维护 - 保留`.tabset`容器,确保Quarto将动态生成的二级标题识别为标签页 内容的提问来源于stack exchange,提问作者Basil
相关产品推荐
相关产品推荐

