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

如何在modelsummary中重命名新增列并自定义多列添加顺序?

解决modelsummary添加自定义列的命名与位置问题

1. 直接为新增列命名

不用外部重命名数据框,在add_columns里创建data.frame时直接指定列名就能避免默认名称:

add_col <- data.frame(自定义列名 = c("x","","x","","",""))

2. 添加多个名称相同的列

由于data.frame不允许重复列名,先给新增列设置临时唯一名称,再用modify_table_header修改表头显示为相同名称即可。

3. 自定义列的插入位置

利用add_columns的position参数,支持用列名(比如模型列的名称HP)指定插入位置(after 列名或before 列名);如果要添加多个列到不同位置,传入list格式的新增列,同时给position传对应长度的位置向量。

完整代码示例

library(fixest)
library(modelsummary)

# 拟合回归模型
reg1 <- feols(hp ~ vs + am + qsec | carb, data = mtcars)
reg2 <- feols(wt ~ vs + am + qsec | carb, data = mtcars)
reg3 <- feols(gear ~ vs + am + qsec | carb, data = mtcars)

# 准备两个新增列,用临时唯一列名
new_col1 <- data.frame(temp_col1 = c("x", "", "x", "", "", ""))
new_col2 <- data.frame(temp_col2 = c("", "y", "", "y", "", ""))

# 生成表格并添加列,指定插入位置,最后修改表头为相同名称
tab <- modelsummary(
    list("HP" = reg1, "WT" = reg2, "GEAR" = reg3),
    stars = TRUE,
    statistic = c("s.e. = {std.error}"),
    estimate = "estimate",
    fmt = fmt_statistic(p.value = fmt_sprintf("%.2e")),
    # 传入list格式的新增列,对应每个列的插入位置
    add_columns = list(new_col1, new_col2),
    position = c("after HP", "after WT")
) %>%
    # 修改表头,把临时列名改成想要的相同名称
    modify_table_header(
        temp_col1 = "自定义列",
        temp_col2 = "自定义列"
    )

# 查看结果
tab

关键说明

  • position参数支持"after 列名"这种语义化写法,比整数位置更直观不易出错
  • 如果要插入多列到同一位置,直接在data.frame中添加多列,指定一个position即可
  • modify_table_header可以灵活修改任意表头的显示名称,完全覆盖原始列名

内容的提问来源于stack exchange,提问作者flâneur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 03:40:29