gtsummary升级后inline_text无法按列名调用?求解答
gtsummary升级后inline_text()列调用方式变更问题解答
问题描述
使用tbl_summary()生成统计表格后,通过inline_text()提取结果时遇到以下问题:
- gtsummary升级前,可直接通过列名(如
"nonspecific")指定column参数调用 - 升级后必须改用
"stat_1"这类标识才能生效,但完整表格打印时列标签显示正常 - 同时想了解因子变量用于
inline_text()的要求
可复现代码:
Children2 <- tibble( "MTS_specific" = as_factor(sample(c("specific","nonspecific"), 100,T)), "Age_INT" = sample(1:18, 100,T), "Geschlecht_FCT" = as_factor(sample(c("male","female"), 100,T)), "AK_Entl_DT" =sample(1:180, 100,T) ) results2 <- Children2 |> select("Diagramm" = MTS_specific, AK_Entl_DT, Age_INT, "Gender"=Geschlecht_FCT) |> tbl_summary(by="Diagramm") # 可行的调用方式 inline_text(results2, variable = "Age_INT", column = "stat_1", pattern= "{median}") # 升级前可行、现在失效的期望调用方式 inline_text(results2, variable = "Age_INT", column = "nonspecific", pattern= "{median}")
问题解答
1. inline_text()列调用方式变更的原因
gtsummary升级后,inline_text()的column参数逻辑调整为优先识别表格内部的统计列标识符(如stat_1、stat_2),而非显示用的列标签。这个变更主要是为了:
- 避免列标签重复时的调用歧义:如果多个列有相同显示标签,用内部标识符能精准定位
- 统一API逻辑:让
inline_text()与其他gtsummary工具函数(如modify_column_*系列)的参数逻辑保持一致,这些函数同样依赖内部标识符而非显示标签
2. 因子变量用于inline_text()的要求
- 因子变量的水平必须在
tbl_summary()的分组(by参数)中被正确识别:确保用于分组的因子变量水平完整且无缺失 - 调用时如果要指定因子水平对应的列,需通过内部统计列标识符(如
stat_1对应第一个因子水平,stat_2对应第二个),而非直接用因子水平名称 - 如果需要用因子水平名称来调用,可以先通过
get_estimates(results2)查看统计列的映射关系,再进行匹配调用
3. 恢复用列标签调用的替代方案
如果想继续使用显示标签(如"nonspecific")调用,可以通过以下步骤实现:
- 提取表格的列映射关系:
col_map <- tibble( label = results2$table_header$label[grepl("stat_", results2$table_header$column)], column = results2$table_header$column[grepl("stat_", results2$table_header$column)] )
- 根据标签匹配对应的内部列名:
target_col <- col_map$column[col_map$label == "nonspecific"]
- 传入
inline_text():
inline_text(results2, variable = "Age_INT", column = target_col, pattern= "{median}")
内容的提问来源于stack exchange,提问作者TS_ST
相关产品推荐
相关产品推荐

