1

id フィールドと 3 つの異なる無関係な p 値を持つ data.frame があります。各列に benjamini-hochberg 補正を適用したいと思います。p.adjustas functionを使用してきましたがp.adjust(data[,2], "BH")、修正を適用する前に各列をソートする必要があり、その後 id 情報が失われるため、問題が発生しています。私のデータは次のようになります。

id  p1  p2  p3
1   ENSG00000179094 1.000000e+00    1.000000e+00    1.000000e+00
2   ENSG00000164306 1.000000e+00    1.000000e+00    1.000000e+00
3   ENSG00000147180 1.000000e+00    8.778847e-02    1.000000e+00
4   ENSG00000172932 4.370119e-01    1.766703e-04    1.000000e+00
5   ENSG00000137252 1.000000e+00    2.562124e-02    1.000000e+00
6   ENSG00000144644 1.654108e-02    1.000000e+00    1.000000e+00
7   ENSG00000197273 3.316301e-01    5.341301e-01    1.000000e+00
8   ENSG00000169221 1.000000e+00    1.000000e+00    1.000000e+00
9   ENSG00000108309 8.689368e-01    2.350522e-03    1.000000e+00
10  ENSG00000172382 1.000000e+00    9.028471e-01    2.697276e-02
11  ENSG00000099937 1.000000e+00    1.000000e+00    9.988716e-01
12  ENSG00000259431 1.000000e+00    1.000000e+00    7.268023e-01
...

IDからの情報を失うことなくこれを行う最も簡単な方法またはパッケージはありますか?

4

2 に答える 2

3

numcolwiseを使用して、data.frame の数値列のみに関数を適用できます。

library(plyr) 
 cbind(dat$id,numcolwise(p.adjust)(dat))
             dat$id       p1          p2        p3
1  ENSG00000179094 1.000000 1.000000000 1.0000000
2  ENSG00000164306 1.000000 1.000000000 1.0000000
3  ENSG00000147180 1.000000 0.790096230 1.0000000
4  ENSG00000172932 1.000000 0.002120044 1.0000000
5  ENSG00000137252 1.000000 0.256212400 1.0000000
6  ENSG00000144644 0.198493 1.000000000 1.0000000
7  ENSG00000197273 1.000000 1.000000000 1.0000000
8  ENSG00000169221 1.000000 1.000000000 1.0000000
9  ENSG00000108309 1.000000 0.025855742 1.0000000
10 ENSG00000172382 1.000000 1.000000000 0.3236731
11 ENSG00000099937 1.000000 1.000000000 1.0000000
12 ENSG00000259431 1.000000 1.000000000 1.0000000

他の引数を使用するには:

cbind(dat$id,numcolwise(p.adjust)(dat, method = 'bonferroni', n = 20))
于 2012-12-04T19:16:02.523 に答える
1

なぜだめですか:

dat2 <- dat  # only needed if you want to protect original data.
dat2[2:4] <- lapply(dat2[2:4], p.adjust, method="BH")
于 2012-12-04T19:58:35.137 に答える