如何用选择助手与集合操作实现tbl_regression指定变量单行显示?
解决tbl_regression中指定二分变量单行显示的问题
问题原因
all_dichotomous()是gtreg包中的函数型变量选择器,直接调用时返回的是函数对象而非变量名字符向量,因此无法直接和setdiff()配合使用,这就是报错的根源。
解决方案
以下两种方法都能实现「仅PAIN_SCALE显示为两行,其他二分变量单行显示」的需求,且无需手动枚举所有二分变量:
方法1:使用选择器的排除语法(推荐)
gtreg的变量选择器支持通过-符号排除特定变量,直接结合all_dichotomous()使用即可:
showmodel = model |> tbl_regression( show_single_row = all_dichotomous() - "PAIN_SCALE" )
方法2:手动提取二分变量列表后排除目标变量
先从模型数据中筛选出所有二分因子变量,再排除PAIN_SCALE,得到需要单行显示的变量向量:
# 提取模型中的所有二分因子变量名 dichotomous_vars = model$model |> dplyr::select(tidyselect::where(~is.factor(.) && nlevels(.) == 2)) |> colnames() # 排除PAIN_SCALE target_vars = setdiff(dichotomous_vars, "PAIN_SCALE") # 生成回归表格 showmodel = model |> tbl_regression( show_single_row = target_vars )
效果验证
两种方法都会让:
INDIV_GENDER、FLOWER_COLOR(二分变量)以单行形式显示PAIN_SCALE(二分变量)保持两行显示INDIV_ETHNICS(多分类变量)不受影响,正常显示所有分类
内容的提问来源于stack exchange,提问作者Sigil
相关产品推荐
相关产品推荐

