如何在R自定义函数中正确生成gtsummary表,解决过滤后N值错误问题
问题根源
你在自定义函数中直接传入字符串形式的变量名操作数据时,dplyr默认会将函数参数variable识别为数据集内的列名,而非存储实际列名的外部变量,导致filter(!is.na(variable))的过滤逻辑完全未生效,统计到的是全量数据集的N值,不是过滤缺失后的真实样本量。
修正后的函数代码
mytable <- function(variable){ trialmiss %>% select(all_of(variable)) %>% filter(!is.na(.data[[variable]])) %>% tbl_summary() } # 调用测试 mytable("grade")
代码说明
select(all_of(variable)):明确声明variable是存储列名的外部变量,取其值来选择对应列,同时规避高版本dplyr的参数歧义警告filter(!is.na(.data[[variable]])):通过.data代词指代当前操作的数据集,用[[解析传入的字符串参数,提取对应列执行缺失值过滤,过滤逻辑正确生效后,gtsummary统计的N值就会和参考代码的输出完全一致。
内容的提问来源于stack exchange,提问作者Moses
相关产品推荐
相关产品推荐

