如何编写一个循环来计算每列对所有其他列的p值?

时间:2014-02-14 13:14:05

标签: r bioconductor

我正在尝试学习如何在R中使用微阵列数据分析。

我无法为我的基因生成p值,看看哪些是基因表达的。我有22283行和38列,其中行是探针集,列是样本,有18个控件和19个。

如何针对所有其他样本(列)生成每个样本(列)的p值。到目前为止,我只是设法做了案例与控件。

dataset.contols = nz.samples[1,c(1:18)]
dataset.cases = nz.samples[1,c(19:38)]

t.test.probe.1=t.test(dataset.contols,dataset.cases,"two.sided")

#printed p-value for first row
t.test.probe.1$p.value

#gets p-values for all rows,(checked first row p-value with the one
#printed above to ensure consistency)
pvalue.all.probes = apply(nz.samples,1,
                          function(x){t.test(x[1:18],x[19:38]) $p.value})

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

set.seed(42)
DF <- data.frame(matrix(rnorm(99), 33))

ps <- data.frame(t(
  combn(ncol(DF), 2, 
        function(ind) c(ind[1], 
                        ind[2], 
                        t.test(DF[, ind[1]],DF[, ind[2]],"two.sided")$p.value))))
names(ps) <- c("col1", "col2", "p")
ps$padj <- p.adjust(ps$p, "fdr")

#  col1 col2         p      padj
#1    1    2 0.4037704 0.7488152
#2    1    3 0.7775216 0.7775216
#3    2    3 0.4992101 0.7488152