0

我正在尝试使用遗传学包中的 LD() 函数执行连锁不平衡计算。不知道的可以写成这样:

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

其中 a 和 b 是字符

鉴于此,我有一个包含 4 列和大量行的数据框,我试图找到其中 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)

我知道“row 'n'”不是实际有效的代码;我只是不知道该怎么形容它。

最后,我计划在可以设置 g1 和 g2 后运行 LD 计算

4

1 回答 1

0

正如詹姆斯在他的评论中所说,您可能想要mapply。我没有你的数据,但这应该可以:

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

我把它做成了社区维基,因为答案是基于而不是我的评论。

于 2011-06-29T13:45:56.013 回答