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

R语言使用fisher.bintest检验二进制变量存p值到dataframe报错咨询

R批量执行二分类变量Fisher检验并存储FDR校正p值方案

之前代码触发x is not a binary variable报错,是因为lapply/sapply传入匿名列向量时,fisher.bintest函数对变量属性的识别出现环境匹配异常。改用遍历变量名+动态构建公式的方式,完全对齐单变量运行的逻辑,可规避该问题。

完整可运行代码如下:

  1. 加载依赖包
library(RVAideMemoire)
  1. 提取目标变量列表,初始化结果表
# 提取所有后缀为_bin的二分类变量名
var_list <- grep("_bin", names(df), value = TRUE)
# 初始化结果数据框,可根据需要扩展存储的字段
df.stats <- data.frame(
  variable = character(),
  fdr_corrected_p = numeric(),
  stringsAsFactors = FALSE
)
  1. 循环执行检验并写入结果
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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 03:15:02