【问题标题】:R Using Tapply with LD functionR使用带有LD功能的Tapply
【发布时间】:2011-06-29 12:44:04
【问题描述】:

我正在尝试使用遗传学包中的 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 计算

【问题讨论】:

  • 能否请您发布一些示例数据? LD 函数在哪里?
  • tapply 是这个工作的错误工具,mapply 可能更合适。但我仍然不清楚你期望的最终结果是什么。
  • 最终结果实际上将是一个数字答案(我忘了补充说我打算为此另写一列)。不过谢谢,我会试一试。

标签: r ld apply


【解决方案1】:

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

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

我制作了社区 wiki,因为答案基于而不是我的评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 2015-04-22
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    相关资源
    最近更新 更多