私はGAアルゴリズムに取り組んでいます(組み合わせ論的問題)では、タプルで表されたときに遺伝子が最も扱いやすくなります。人口の各メンバーには複数の遺伝子があるため、いくつかのアトミック変数(IDやスコアなど)があり、変数の一部がタプルを表す観測値を保持できるデータフレームが必要です。私は、ベクトル、リスト、および行列を使用してこれらのタプルを表現しようとしましたが、すべての場合、Rは単に cbind
/rbind
データフレームにタプルを入力するか、エラーをスローします。
例(母集団の両方のメンバーを同じ遺伝子で開始する)
ID<-1:2
Score<-c(0,0)
Gene1<-list(1:3)
Gene2<-list(4:6)
Gene3<-list(7:9)
testing<-data.frame(ID,Score,replicate(2,Gene1),replicate(2,Gene2),replicate(2,Gene3))
Error in data.frame(ID, Score, replicate(2, Gene1), replicate(2, Gene2), :
arguments imply differing number of rows: 2, 3
データフレームを次のようにしたい...
そして、私は次のようなものを使用して人口メンバーのフィットネスをスコアリングすることができます Fitness.Score(testing[,"Gene1"],testing[,"Gene2"],testing[,"Gene3"])
Rにこれをさせる方法はありますか?
回答:
回答№1は0これは実際、私が作成していたよりも簡単です。を使用して data.frame
関数により rbind
/cbind
型の振る舞い。 data.frameを作成してから変数を追加することはしません。
ID<-1:2
Score<-c(0,0)
Gene1<-list(1:3)
Gene2<-list(4:6)
Gene3<-list(7:9)
testing<-data.frame(ID,Score)
testing$Gene1<-replicate(2,Gene1)
testing$Gene2<-replicate(2,Gene2)
testing$Gene3<-replicate(2,Gene3)
View(testing)