我想对尺寸(50x752)的数据框进行 chisq.test 。我想为所有列的所有可能的成对比较获取 pvalues(通过多次测试调整)。最后,我想取回一个矩阵 (50x50) 以生成调整后的 chisq pvalues 的热图。这是我目前所做的,但这远非理想。
Step1:进行成对比较
function(data,p.adjust.method="holm")
{
cor.mat <- cor(data)
x<-ncol(data)#nb of column in matrix here 50
y<-nrow(data)#nb of column in matrix here 758
index<-t(combn(x, 2)) #create the matrix position of output for all possible combination
nindex <- nrow(index)
pvals <- numeric(nindex)
for (i in 1:nindex)
{
pvals[i]<-chisq.test(data[, index[i, 1]], data[, index[i,2]])$p.value
}
pvals<-p.adjust(pvals,method = p.adjust.method)
out <- as.data.frame(cbind(index, pvals))
}
Step2:将输出表转换为矩阵
dcast(df,V2~V1,fill=1) # thanx to Roland for this function!
但这效果不佳,因为我没有在最终矩阵中镜像 pvalue,并且我必须操纵第一个函数的输出以使对角线填充为 0(将列与自身进行比较时)。对你的帮助表示感谢!