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
相关产品推荐
相关产品推荐

