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

gt包summary_rows()设置有效数字报缺少data参数如何解决

报错成因

summary_rows()的formatter参数接收的对象必须是可调用的格式化函数,你当前写法里传入的fmt_number(n_sigfig = 1)是直接触发函数执行的调用语句。而fmt_number()的第一个必填参数是gt表对象data,你直接调用时没有传入这个必填参数,代码运行到此处就会直接抛出“缺少参数'data'”的错误,根本不会进入summary_rows()的内部执行逻辑。

修正方法

不要在formatter参数位置直接写带括号、带参数的函数调用语句,有两种标准写法可以实现需求:

  • 写法1(官方推荐,最简洁):仅向formatter传入fmt_number函数名本身,把格式化需要的参数统一放在formatter_args参数中,以列表形式传递:
library(gt)
library(tidyverse)

iris %>%
  gt(groupname_col = "Species") %>%
  summary_rows(
    groups = TRUE,
    columns = c(Sepal.Length:Petal.Width),
    fns = list(
      Mean = "mean",
      SD = "sd"
    ),
    formatter = fmt_number,
    formatter_args = list(n_sigfig = 1)
  )
  • 写法2(适合复杂格式化场景):用匿名函数包裹格式化逻辑,手动给fmt_number传入待处理的表对象和对应参数,兼容所有gt和R版本:
library(gt)
library(tidyverse)

iris %>%
  gt(groupname_col = "Species") %>%
  summary_rows(
    groups = TRUE,
    columns = c(Sepal.Length:Petal.Width),
    fns = list(
      Mean = "mean",
      SD = "sd"
    ),
    formatter = function(data) {
      fmt_number(data, n_sigfig = 1)
    }
  )

两种写法运行后都可以正常生成按物种分组的表格,汇总行的均值、标准差结果都会按设置保留1位有效数字,不会再触发参数缺失报错。

内容的提问来源于stack exchange,提问作者Raphaël Bilgraer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:12:35