Ich habe Daten wie folgt aus:Wie erstelle ich eine data.table, indem ich programmatisch benannte Vektoren kombiniere?
number_of_runs <- 4
r1 <- c(1,2,3)
r2 <- c(4,5,6)
r3 <- c(7,8,9)
r4 <- c(10,11,12)
Ich habe regelmäßig Zahlen von Läufen unterschiedlichen (gespeichert als drei Zahlen in einem Vektor namens r1 für den ersten Lauf, r2 für die zweite Lauf, etc.). Ich möchte diese Vektoren in eine data.table
kombinieren, aber da die Anzahl der Läufe variiert, muss ich dies programmatisch tun.
arbeitet Below perfekt für eine festgelegte Anzahl von Durchläufen Ausgeben dt
genau so, wie ich es brauche:
dt <- data.table(r1,r2,r3,r4)
Ich brauche etwas ähnliches wie dies unter, aber das funktioniert tatsächlich:
dt <- data.table(c(paste0("r", 1:number_of_runs)))
Also, wenn es gibt 3 Läufe, es wird eine data.table wie data.table(r1,r2,r3)
ausgegeben und wenn es 4 Läufe gibt, wird es eine data.table wie data.table(r1,r2,r3,r4)
und so weiter ausgeben.
Ich verwende data.table
Version 1.10.4 auf einem Windows 7-Rechner. Ich schätze Ihre Ideen dazu.
Woher kamen die 4 'r *' Vektoren? Das Erstellen verschiedener Variablen mit verwandten Informationen ist nicht der beste Weg, um Dinge zu tun. Diese sollten sich wahrscheinlich in einer Liste befinden, die die Arbeit viel einfacher macht. Aber das Problem, das Sie haben, ist, dass Sie Symbole (Dinge ohne Anführungszeichen) nicht mit Zeichenwerten ersetzen können (was 'paste0()' zurückgibt). – MrFlick
@MrFlick Ich bin nicht verheiratet mit Vektoren für die 4 'r *'. Wie würden Sie vorschlagen, die 4 'r *' in einer Liste zu erstellen, um dieses Problem zu lösen? Vielen Dank. – FG7
Nun, wie hast du sie überhaupt erschaffen? Hast du 4 Mal eine Funktion ausgeführt? Etwas wie "r <- replicate (4, roll())" könnte funktionieren. Oder einfach nur diese Werte wörtlich verwenden, "r <- liste (c (1,2,3), c (4,5,6), c (7,8,9), c (10,11,12))" . Dann können Sie sie mit 'r [[1]]', 'r [[2]]', usw. erhalten und 'do.call (" data.table ", r)' verwenden, um sie in Daten zu speichern. Tabelle. – MrFlick