R语言使用fisher.bintest检验二进制变量存p值到dataframe报错咨询
R批量执行二分类变量Fisher检验并存储FDR校正p值方案
之前代码触发x is not a binary variable报错,是因为lapply/sapply传入匿名列向量时,fisher.bintest函数对变量属性的识别出现环境匹配异常。改用遍历变量名+动态构建公式的方式,完全对齐单变量运行的逻辑,可规避该问题。
完整可运行代码如下:
- 加载依赖包
library(RVAideMemoire)
- 提取目标变量列表,初始化结果表
# 提取所有后缀为_bin的二分类变量名 var_list <- grep("_bin", names(df), value = TRUE) # 初始化结果数据框,可根据需要扩展存储的字段 df.stats <- data.frame( variable = character(), fdr_corrected_p = numeric(), stringsAsFactors = FALSE )
- 循环执行检验并写入结果
for (var_name in var_list) { # 动态生成检验公式,和单变量运行逻辑完全一致 formula_tmp <- as.formula(paste0(var_name, " ~ Group")) # 执行检验,指定数据来源避免环境匹配问题 test_result <- fisher.bintest(formula_tmp, data = df, alpha = 0.05, p.method = "fdr") # 写入结果,可根据需要提取test_result中的其他指标 df.stats <- rbind(df.stats, data.frame( variable = var_name, fdr_corrected_p = test_result$p.value )) }
如果需要存储更多检验结果(如原始p值、统计量、置信区间等),可运行str(test_result)查看返回对象的结构,对应扩展结果数据框的字段即可。
内容的提问来源于stack exchange,提问作者Chris Taylor
相关产品推荐
相关产品推荐

