2011-12-15 51 views
0

我正在嘗試做超過400個日期的費舍爾精確測試。費舍爾精確測試工作2x2的可能性。這個測試對許多用於分子標記和遺傳學研究。因此,如果我有很多日期,變得不可能使所有可能性成爲一對一的標記組合。 R中fisher.test使用R

分析代碼:

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

我試着不要使用:

(for i in) 

但我並沒有成功。我怎麼能自動使用R?

Tnks!

+2

(1)的拼寫爲'p.value`,不`p.valeu`。 (2)即使在第二個片段中,你的語法也是不正確的。請參閱`?「以獲得正確的答案。 (3)如果沒有一些示例數據,我們不能爲你做很多事情。看看這裏的其他一些問題,看看是如何完成的。謝謝! – 2011-12-15 02:29:26

回答

1

從問題的角度來看,有點難以分辨你想要什麼,但是如果我能夠解密某些東西,我認爲你想從2X400矩陣的列創建2X2矩陣組合。

所以你會有79800組合?我認爲。

choose(400,2) = 79800 

我想爲fisher.test I,J是一樣的J,I和爲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(我在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 
} 
} 
+0

`選擇(400,2)`:) – 2011-12-15 10:04:04