私は確認済みのRユーザーのためにいくつかの初心者の質問があります:-)。私は行が個人に対応し、列が異なるSNP遺伝子座での遺伝子型に対応する「遺伝子座」クラスのオブジェクトを持っている(人口情報の1列+):私は、で定義されている12の集団をplyr Rライブラリの 'ddply'コマンドを実行する際の問題
gen.loc Allelic data frame: 283 individuals 151 loci 1 additional variable
as.data.frame(gen.loc) population PBA10091 PBA10106 PBA10242 PBA10272 PBA11037 PBA11455 PBA11744 001 ANTE 01/02 01/01 01/01 02/02 02/02 02/02 01/01
002 ANTE 01/01 01/01 01/01 02/02 01/02 02/02 01/02
003 ANTE 01/01 02/02 01/01 02/02 02/02 01/02 01/01
004 ANTE 01/01 01/01 01/01 02/02 02/02 01/02 01/01
005 ANTE 01/02 02/02 01/01 02/02 02/02 02/02 01/02
006 ANTE 01/01 02/02 01/02 01/02 01/02 02/02 01/01
を有します私の "人口"の列。私は、各集団内の個体間の対の遺伝子型の距離を計算したいと思う。ちょうど1つのポップで
、コマンドは次のようになります
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結果が実際のRデータフレームではなく「dist」オブジェクトであるという事実に問題がある可能性があります。
ここでddplyを使用するより良い方法はありますか?または、dist.geneコマンドを適用しながらデータフレームを分割する別の方法はありますか?さもなければ、私はポップごとに1つの入力データフレームを作成すると思います:-)ポップがたくさんある場合は便利です!
ありがとうございました!
すべてのベストを、