我正在尝试超过400个日期的Fisher精确测试。 Fisher精确测试可以实现2x2的可能性。该测试用于分子标记和遗传学研究中的许多测试。 所以,如果我有很多日期,就不可能将所有可能性一对一组合在一起。
R中的分析代码:
alelo1<-data[,1]
alelo2<-data[,2]
fisher.test(alelo1,alelo2)$p.valeu
我尝试使用:
(for i in)
但我没有成功。我怎么能用R ??
自动完成TNKS!
答案 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
}
}