我目前正试图从两组之间的差异中获得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")))