Pracujem na algoritme GA (pre aproblém kombinatoriky), v ktorom sa s génmi najľahšie pracuje, keď sú reprezentované n-ticami. Každý člen mojej populácie má viac génov, takže chcem dátový rámec, ktorý by obsahoval pozorovania, kde existuje niekoľko atómových premenných (napr. ID a skóre) a potom niektoré z týchto premenných predstavujú n-tice. Snažil som sa reprezentovať tieto n-tice pomocou vektorov, zoznamov a matíc, ale vo všetkých prípadoch je R jednoducho cbind
/rbind
zapojenie n-tíc do dátového rámca alebo vyhodenie chyby.
Príklad (začnite u oboch príslušníkov populácie rovnakými génmi)
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
Chcem, aby dátový rámec vyzeral takto ...
A potom by som bol schopný vyhodnotiť vhodnosť člena populácie pomocou niečoho podobného Fitness.Score(testing[,"Gene1"],testing[,"Gene2"],testing[,"Gene3"])
Existuje spôsob, ako to donútiť R?
odpovede:
0 pre odpoveď č. 1Je to skutočne oveľa jednoduchšie, ako som to robil. Pomocou data.frame
funkcia spôsobuje rbind
/cbind
typové správanie. Vytvorenie dátového rámca a následné pridanie premenných nie.
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)