Ich möchte Spalten in meinem Ordner data.table
x
mit einem Zeichenvektor aus Spaltennamen neu anordnen neworder
:
library(data.table)
x <- data.table(a = 1:3, b = 3:1, c = runif(3))
neworder <- c("c", "b", "a")
Natürlich könnte ich tun:
x[ , neworder, with = FALSE]
# or
x[ , ..neworder]
# c b a
# 1: 0.8476623 3 1
# 2: 0.4787768 2 2
# 3: 0.3570803 1 3
Dafür müsste jedoch der gesamte Datensatz erneut kopiert werden. Gibt es einen anderen Weg, dies zu tun?
r
data.table
Michael
quelle
quelle
setcolorder
Verschiebt die Spaltenzeiger ohne Arbeitsspeicher. Dieser Satz über die Verwendung eines Arbeitsspeichers, der so groß wie eine Spalte ist, istsetkey
wirklich.setcolorder(df, c("someCol",colnames(dt)[!(colnames(dt) %in% c("someCol"))]))
setcolorder()
jetzt weniger alsncol(DT)
Spalten, die nach vorne verschoben werden sollen"Man kann es einfacher finden, die obige Lösung zu verwenden, sondern stattdessen nach Spaltennummer zu sortieren. Zum Beispiel: Bibliothek (data.table)
quelle