我想要做的尺寸(50x752)的数据帧一chisq.test。 我想对所有可能的PAIRE比较中的所有列的p值(由多个测试调整)。 最后我想回去矩阵(50×50),以产生调整CHISQ p值的热图。 这是我做的时刻,但这个远远beeing理想。
第一步:做pairewise比较
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))
}
步骤2:该输出表被变换成一个矩阵使用
dcast(df,V2~V1,fill=1) # thanx to Roland for this function!
但是,这都不尽如人意,因为我不反映在最后的矩阵p值,我不得不操纵第一函数的输出来获得充满0对角线(列与自己进行比较时)。 对你的帮助表示感谢!