我有一个p值列表,我想为FDR的多个比较计算调整p值。在R中,我可以使用:

pval <- read.csv("my_file.txt",header=F,sep="\t")
pval <- pval[,1]
FDR <- p.adjust(pval, method= "BH")
print(length(pval[FDR<0.1]))
write.table(cbind(pval, FDR),"pval_FDR.txt",row.names=F,sep="\t",quote=F )

如何在Python中实现此代码?在Google的帮助下,这是我在Python中的可行尝试:
pvalue_list [2.26717873145e-10, 1.36209234286e-11 , 0.684342083821...] # my pvalues
pvalue_lst = [v.r['p.value'] for v in pvalue_list]
p_adjust = R.r['p.adjust'](R.FloatVector(pvalue_lst),method='BH')
for v in p_adjust:
    print v

上面的代码抛出AttributeError: 'float' object has no attribute 'r'错误。谁能帮我指出我的问题?先谢谢您的帮助!

最佳答案

如果您希望确定从R获得的 yield ,还可以表明您希望使用R包“stats”中的函数:

from rpy2.robjects.packages import importr
from rpy2.robjects.vectors import FloatVector

stats = importr('stats')

p_adjust = stats.p_adjust(FloatVector(pvalue_list), method = 'BH')

09-19 04:31