我正在开发一种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做到这一点?
答案 0 :(得分:1)
这实际上比我制作它更容易。使用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)
答案 1 :(得分:0)
您应该下载软件包“ sets”,然后将包含元组的变量声明为元组:mydata $ variable <-as.tuples(在数据框中,您可以输入诸如(1,2,4)一个三元组。