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

gtsummary包tbl_uvregression函数Y参数在自定义函数中求值异常问题

解决方案

这个问题由tbl_uvregression的非标准求值逻辑导致:y参数默认不会解析函数内部传入的变量值,只会直接把参数名当做目标变量名读取。你可以用rlang的符号注入能力处理参数,适配字符串/裸变量名两种传入形式,修正后的函数如下:

reg_log <- function(dataframew, variables, by) {
  # @param1 加权处理后的数据框
  # @param2 待纳入分析的变量向量
  # @param3 作为Y参数传入的目标列名,支持字符串/未加引号的变量名两种格式
  # 将传入的by参数转为R识别的变量符号
  y_var <- rlang::ensym(by)
  Table <- tbl_uvregression(
    data = dataframew, 
    include = variables, 
    exponentiate = TRUE, 
    method.args = list(family = quasibinomial()), 
    y = !!y_var, # 注入符号作为Y变量
    method = survey::svyglm
  )
  return(Table)
}

修正后原调用代码不需要改动,可直接正常运行:

hdv2003w <- svydesign(ids = ~1, data = hdv2003, weights = ~poids)
reg_log(hdv2003w, c("age", "sexe", "hard.rock", "sport"), "sport")

如果不需要兼容两种参数传入格式,确定调用时只会传字符串形式的变量名,也可以把rlang::ensym(by)替换为rlang::sym(by),效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:54:07