将Fisher测试中的多个p值合并到原始数据

时间:2018-07-30 19:24:33

标签: r p-value

我对所有行进行了Fisher测试,该测试输出了很多p值。如何正确将p值合并到原始列?我尝试了以下代码,但原始数据(d)中的行与合并数据帧(f)中的p值(e)不匹配。

d <- read.table('test.txt', header = FALSE)

e <-apply(d,1, function(x) fisher.test(matrix(x,nr=2), alternative='greater')$p.value)

f <-merge(d,as.data.frame(e),by.x=0,by.y=0)

> d       
    V1  V2    V3     V4    
1   1 839    63 222247    
2   1 839    47 222263    
3   1 839   299 222011    
4   6 834  1821 220489    
5   1 839   198 222112    
6   1 839   324 221986    
7   2 838   808 221502    
8   3 837   935 221375    
9   4 836  1723 220587    
10  1 839   117 22219

> e
     [1] 2.144749e-01 1.656028e-01 6.776690e-01 6.848409e-01 5.280300e-01 7.067099e-01 8.091576e-01 6.859446e-01
     [9] 8.895988e-01 3.592658e-01 

> f
  Row.names  V1  V2    V3     V4      e    
1          1  1 839    63 222247 2.144749e-01    
2         10  1 839   117 222193 3.592658e-01    
3         11  6 834   850 221460 1.071752e-01    
4         12 29 811 11625 210685 9.941101e-01    
5         13  2 838  1231 221079 9.463472e-01    
6         14  1 839  1236 221074 9.907043e-01    
7         15  3 837   905 221405 6.647785e-01    
8         16  3 837   793 221517 5.768163e-01    
9         17  6 834   687 221623 4.906665e-02    
10        18  1 839   226 222084 5.753710e-01    

1 个答案:

答案 0 :(得分:0)

  f <-cbind(d,e)
#   V1  V2   V3     V4         e
#1   1 839   63 222247 0.2144749
#2   1 839   47 222263 0.1656028
#3   1 839  299 222011 0.6776690
#4   6 834 1821 220489 0.6848409
#5   1 839  198 222112 0.5280300
#6   1 839  324 221986 0.7067099
#7   2 838  808 221502 0.8091576
#8   3 837  935 221375 0.6859446
#9   4 836 1723 220587 0.8895988
#10  1 839  117  22219 0.9873172