Hallo Anti,
Anti hat geschrieben: ↑Do Nov 08, 2018 4:30 pm
Ok Leute, ich habe mein Bestes getan, um die Struktur meines Codes zu verbessern. ... Leider habe ich als Autodidakt nie gelernt, effizient zu programmieren (und brauchte es bislang auch nicht - dann habe ich halt ein paar Sekunden länger gewartet).
dies gelesen habend dachte ich, Du würdest hier jetzt eine überarbeitet Version Deines Quelltextes präsentieren. Zum Beispiel indem Du statt der Spaltennummern die Spaltennamen schreibst. Gerade das Setzen der Spaltennummern anstelle der Namen macht man gelegentlich aus Effizienzgründen (wenn man meint, man spart viel Zeit, weil der Interpreter die Spaltennamen nicht in die passende Spaltennummer übersetzen muss) - leider geht dabei die Lesbarkeit verloren (und damit die zukünftige Möglichkeit für eine effiziente Bearbeitung des Codes). Zum zweiten dürfte die zusätzliche Zeit beim Interpreter bei dieser Datenmenge kaum den Ausschlag geben - soll heißen: die Verarbeitung der Daten macht bei weitem den größeren Arbeitsaufwand.
Ein erster Ansatz für das Verwenden der Spaltennamen könnte sein:
Code: Alles auswählen
runlistColumns <- data.frame(Name=c("ID", "sex", "BirthYear", "BirthPlace",
"DeathYear", "DeathPlace", "residence", "YearOfMigration",
"partner", "parent1", "parent2",
"autosomalAsianA", "mitoAsianA", "YAsianA", "overallA",
"maxOffspring", "TimeOfMigration"), colNr=1:17
)
runlistColumns
So hat man jetzt eine bessere Übersicht über die Zugehörigkeiten von Spaltennamen und -nummern. Die Spaltennamen habe ich so verändert, dass man keine Probleme bei deren Verwendung bekommt.
Anm.: ..., bin ich leider noch nicht dazu gekommen meinen Code fertig zu schreiben. Es fehlt also nach wie vor noch die Verpartnerung und die Nachkommens-Produktion der Agenten sowie final die Berechnung der Differenzen der simulierten und realen Ancestry-Schätzer.
Ich möchte dringend empfehlen, dass zuerst die Lesbarkeit des Codes erhöht wird, bevor er in dem jetzigen Stil erweitert wird.
Gruß, Jörg