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

如何在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
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:05:11