【发布时间】:2018-03-29 06:46:14
【问题描述】:
我对已确认的 R 用户有一些新手问题 :-)。我有一个“基因座”类的对象,其行对应于个体,列对应于不同 SNP 基因座的基因型(+ 1 列用于人口信息):
gen.loc
Allelic data frame: 283 individuals
151 loci
1 additional variable
as.data.frame(gen.loc)
人口 PBA10091 PBA10106 PBA10242 PBA10272 PBA11037 PBA11455 PBA11744
001 前 01/02 01/01 01/01 02/02 02/02 02/02 01/01
002 前 01/01 01/01 01/01 02/02 01/02 02/02 01/02
003 前 01/01 02/02 01/01 02/02 02/02 01/02 01/01
004 前 01/01 01/01 01/01 02/02 02/02 01/02 01/01
005 安特 01/02 02/02 01/01 02/02 02/02 02/02 01/02
006 前 01/01 02/02 01/02 01/02 01/02 02/02 01/01
我的“人口”列中定义了 12 个人口。我想计算每个群体中个体之间的成对基因型距离。
只需弹出一声,命令将是:
d <- dist.gene(gen.loc, method="pairwise", pairwise.deletion = TRUE, variance = FALSE)
它返回一个具有个体之间成对差异的“dist”类对象。
但是,我想根据“人口”列的 12 个级别拆分我的数据框,并使用“应用”函数分解此过程。
我尝试了 plyr 库的 'ddply' 功能:
ddply(as.data.frame(gen.loc), as.data.frame(gen.loc)$population, function(e) dist.gene(e, method="pairwise", pairwise.deletion = TRUE, variance = FALSE))
不幸的是,此命令返回错误消息:
Error in eval(expr, envir, enclos) : object 'ANTE' not found
'ANTE' 是出现在数据框中的第一个弹出窗口,我猜拆分出了点问题。另外,我想 dist.gene 结果是“dist”对象而不是实际的 R 数据框这一事实可能存在问题。
这里有没有更好的使用 ddply 的方法?或者在应用 dist.gene 命令时拆分我的数据框的另一种方法?否则我想我只会为每个 pop 创建一个输入数据帧... :-) 如果一个有大量 pop 就不方便了!!
感谢您的帮助!
一切顺利,
克里斯
【问题讨论】: