fisher.test使用R.

时间:2011-12-15 01:47:22

标签: r

我正在尝试超过400个日期的Fisher精确测试。 Fisher精确测试可以实现2x2的可能性。该测试用于分子标记和遗传学研究中的许多测试。 所以,如果我有很多日期,就不可能将所有可能性一对一组合在一起。

R中的分析代码:

alelo1<-data[,1]
alelo2<-data[,2]
fisher.test(alelo1,alelo2)$p.valeu

我尝试使用:

(for i in)

但我没有成功。我怎么能用R ??

自动完成

TNKS!

1 个答案:

答案 0 :(得分:1)

有点难以从问题中判断出你想要什么,但如果我能够破译一些东西,我认为你想要从2X400矩阵的列中创建2X2矩阵组合。

所以你会有79800组合?我想。

choose(400,2) = 79800

我想对于fisher.test i,j与j相同,我和i = j没有多大意义,所以

我首先要做一个功能:

alelos = function(i,j){
alleys= matrix(c(df[,i],df[,j]),nrow=2,byrow=F)
#df is the 2X400 matrix, called data in the question
return(fisher.test(alleys)$p.value)
}

然后尝试使用for(i in 1:400)和一段时间的循环?或者用结果制作三角矩阵的东西。如:

我将举例说明一个10列的向量。

同样的事情应该适用于400.

set.seed(4)
df= matrix(c(sample(1:100,10,replace=T),sample(1:100,10,replace=T)),nrow=2)


resultmatrix = matrix(0,10,10)
#or 10x9 if you prefer

for(i in 10:1){
  j=1
while(i > j){
  resultmatrix[i,j]= alelos(i,j)

j=j+1
}
 }