R p、 根据整个数据帧进行调整

R p、 根据整个数据帧进行调整,r,R,我有一个p.value的数据框,每个列都有一个变量名 我的代码是sapply(pval,p.adjust,method=“fdr”) 此代码返回基于每列调整的qvalue,这意味着基于每列的p列,然后进行调整 如何对整个数据帧执行fdr,这意味着p在所有数据中排名?这可能不是最有效的方法,因为它需要大量转换,但对于小数据帧,应该可以: 示例数据(假设p值的数据框架): 基本上,通过以上步骤,您可以将data.frame转换为矩阵,然后转换为向量,然后根据所有值调整p值,然后重新构造矩阵 上述内

我有一个p.value的数据框,每个列都有一个变量名

我的代码是
sapply(pval,p.adjust,method=“fdr”)

此代码返回基于每列调整的qvalue,这意味着基于每列的p列,然后进行调整


如何对整个数据帧执行
fdr
,这意味着p在所有数据中排名?

这可能不是最有效的方法,因为它需要大量转换,但对于小数据帧,应该可以:

示例数据(假设p值的数据框架):

基本上,通过以上步骤,您可以将data.frame转换为矩阵,然后转换为向量,然后根据所有值调整p值,然后重新构造矩阵

上述内容可在R基中写成:

matrix(p.adjust(as.vector(as.matrix(pval)), method='fdr'),ncol=2)

我遇到了这个问题

检查p的使用情况。调整如下
p.adjust(p,method=p.adjust.methods,n=length(p))

实际上,我们可以将“n”改为矩阵的长度,因此,简单的应用程序应该是这样工作的:


pvalue\u adjusted\u matrix一种保留行和列名的替代方法是将平方矩阵转换为长矩阵,计算padj,然后将其转换回:

longPVal=t(data.frame(row.names = c('G1','G2','R','P'), stringsAsFactors = F))

for(rr in rownames(pval)){ #Convert to long format (maybe MELT helps here?)
  for(cc in colnames(pval)){
    longPVal=rbind(fullSpear,c(rr,cc,dat1[rr,cc],pval[rr,cc]))
  }
}
longPVal[,'ADJP']=p.adjust(longPVal[,'P'], method = 'BH') #Correction

out=data.frame(stringsAsFactors = F) #Rebuild the squared matrix of adjP
for(rr in rownames(pval)){
  for(cc in rownames(pval)){
    rowdat=longPVal[which(longPVal[,'G1']==rr & fullSpear[,'G2']==cc),]
    out[rr,cc]=rowpos['ADJP']
  }
}

从文档中:
注意,您可以将n设置为大于长度(p),这意味着对于“bonferroni”和“holm”方法,未观察到的p值被假定为大于所有观察到的p,对于其他方法,则等于1。
。我怀疑OP是否想要这些假设
matrix(p.adjust(as.vector(as.matrix(pval)), method='fdr'),ncol=2)
longPVal=t(data.frame(row.names = c('G1','G2','R','P'), stringsAsFactors = F))

for(rr in rownames(pval)){ #Convert to long format (maybe MELT helps here?)
  for(cc in colnames(pval)){
    longPVal=rbind(fullSpear,c(rr,cc,dat1[rr,cc],pval[rr,cc]))
  }
}
longPVal[,'ADJP']=p.adjust(longPVal[,'P'], method = 'BH') #Correction

out=data.frame(stringsAsFactors = F) #Rebuild the squared matrix of adjP
for(rr in rownames(pval)){
  for(cc in rownames(pval)){
    rowdat=longPVal[which(longPVal[,'G1']==rr & fullSpear[,'G2']==cc),]
    out[rr,cc]=rowpos['ADJP']
  }
}