2011-06-29 30 views
0

我試圖用遺傳學軟件包中的LD()函數進行連鎖不平衡計算。對於那些不知道是誰,它的定義如下所示:R使用帶LD函數的Tapply

g1=genotype(a) 
g2=genotype(b) 
LD(g1,g2) 

其中A和B是指文字

鑑於這種情況,我有4列的數據幀和大量的行和我m試圖找到2列的LD。假設df $ col3和df $ col4代表上面例子中的a和b,我將如何執行計算?

我正在考慮使用tapply,作爲一個for循環將永遠需要:

tapply(df$col3,df$col4,function) 

的問題是,我不能想出一個辦法來設置,他們只在特定的行以下:

g1=genotype(row "n", col3) 
g2=genotype(row "m", col4) 

我知道「行'n'」不是一個實際的有效代碼;我只是不知道如何描述它。

最後,我打算上運行的LD計算一次,我可以設置G1和G2

+0

請問您可以發佈一些示例數據? LD功能在哪裏? –

+0

'tapply'是這項工作的錯誤工具,'mapply'可能更合適。但我仍不清楚你期望最終結果如何。 – James

+0

最終的結果實際上是一個數字答案(我忘記補充說我要爲此另做一個專欄)。不過謝謝,我會試試看。 – Anon

回答

0

正如他的評論可能要mapply詹姆斯的狀態。我沒有你的數據,但這應該工作:

mapply(
    function(a, b) LD(genotype(a), genotype(b)), 
    a = df$col3, 
    b = df$col4 
) 

我做到了社區維基原因的答案是基於,不是我的,評論。