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

使用gt::tab_row_group报错:指定行名不存在的问题求助

问题分析与解决

错误原因

你的代码中,tab_row_group()的rows参数直接传入字符串时,gt默认会匹配表格的行名(row names),但你通过tibble()创建的islands_tbl,行名是默认的1、2、3...序列,并非name列里的岛屿名称。因此传入c("Australia", "Greenland")时,gt找不到对应行名的行,触发报错。

解决方案

要根据name列的值选择分组行,需在rows参数中使用逻辑表达式匹配name列内容,而非直接传字符串。修改后的可运行代码如下:

library(dplyr)
library(gt)

# 处理islands数据集
islands_tbl <- 
  tibble(
    name = names(islands),
    size = islands
  ) |>
  arrange(desc(size)) |>
  slice(1:10)

# 创建gt表格并按需求分组
gt_tbl <- gt(islands_tbl) |>
  tab_row_group(
    label = "continent",
    rows = 1:6
  ) |>
  tab_row_group(
    label = "country",
    rows = name %in% c("Australia", "Greenland")  # 通过name列匹配目标行
  ) |>
  tab_row_group(
    label = "subregion",
    rows = name %in% c("New Guinea", "Borneo")  # 通过name列匹配目标行
  )

# 展示最终表格
gt_tbl

补充说明

如果一定要通过行名匹配,可先将name列设为表格行名,再使用原代码的字符串参数:

# 将name列转为行名
islands_tbl <- islands_tbl |> tibble::column_to_rownames(var = "name")

# 后续可直接用行名字符串匹配
gt(islands_tbl) |>
  tab_row_group(label = "country", rows = c("Australia", "Greenland"))

但这种方式不符合tidyverse的操作规范,更推荐使用列匹配的逻辑表达式方案。

内容的提问来源于stack exchange,提问作者Nate

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 22:41:04