我有一个 p 值的数据框。除了 p 值,它还有一些零条目。
data
V1 V3 V4 V5 V6 V7
1 ADAM32 0.001 0 0 0 0
2 ADAM32 0.001 0.65 0.001 0.001 0.65
3 ADAM32 0.65 0 0 0 0
4 CCL5 0.000491 0.000491 0.000491 0 0
5 CILP2 0.500000024 0.500000024 0.500000024 0 0
6 EPHB3 0.000562 0.000562 0.000562 0.000562 0.000562
7 EPHB3 0.000562 0 0 0 0
8 GUCA1A 0.002006 0.602006 0.002006 0.602006 0.002006
9 GUCA1A 0.602006 0 0 0 0
10 HSPA6 0.000322 0.000322 0.000322 0.000322 0.000322
11 HSPA6 0.000322 0 0 0 0
12 MAPK1 0.002 0.002 0.002 0 0
我使用以下代码应用 Fisher 方法来组合每行的 p 值。
## Fisher's Method
Fisher.test <- function(p) {
Xsq <- -2*sum(log(p))
p.val <- pchisq(Xsq, df = 2*length(p), lower.tail = FALSE)
return(c(Xsq = Xsq, p.value = p.val))
}
for(k in 1 : nrow(data))
{
p <- as.numeric(data[j,-1])
fisher <- Fisher.test(p)
print(fisher)
}
我想从添加到行和中跳过零,因为它会在 p 值的对数转换后导致无限值。