r语言 - 当统计检验使用二进制变量时,将p值输出保存到数据帧中



我目前正试图从两组之间的差异中获得fdr校正的p值,并将该p值保存为148个不同的变量。这两组分别是对照组(第1-10行)和FAD组(第11 - 40行)。148个变量的组有二进制值,所以我用fisher。暂时从RVAideMemoire包中下载。我希望所有的p值都保存在一个数据框中。

尝试如下:

df.stats <- as.data.frame(lapply(df[156:303], function(x) fisher.bintest(x ~ df$Group,alpha = 0.05, p.method = "fdr")))

返回错误x is not a binary variable。回溯:

5.
stop(paste(names(mf)[1], "is not a binary variable"))
4.
chisq.bintest(x ~ df$Group, alpha = 0.05, p.method = "fdr")
3.
FUN(X[[i]], ...)
2.
lapply(df[156:303], function(x) chisq.bintest(x ~ df$Group, alpha = 0.05, p.method = "fdr"))
1.
as.data.frame(lapply(df[156:303], function(x) chisq.bintest(x ~ df$Group, alpha = 0.05, p.method = "fdr")))

尝试下面的操作会得到相同的错误:

df.stats <- as.data.frame(sapply(X = df[,grep("_bin", names(df),value = T)], FUN = function(x) fisher.bintest(x ~ df$Group, alpha = 0.05, p.method = "fdr"))

该函数单独运行良好,只有一个变量:fisher.bintest(df$lh_G_oc.temp_med.Parahip_thickness_bin ~ df$Group, alpha = 0.05, p.method = "fdr")

我不一定在寻找最干净的解决方案,只是可以为所有148个变量执行上述操作并将结果放在数据框架中。提前感谢!

尝试在lapply中传入名称,在reformulate中构造公式。

df.stats <- as.data.frame(lapply(names(df)[156:303], function(x) 
fisher.bintest(reformulate('Group', x),alpha = 0.05, p.method = "fdr")))

最新更新