Saya ingin kolom menyusun ulang di saya data.table
x
, diberikan vektor karakter nama kolom, neworder
:
library(data.table)
x <- data.table(a = 1:3, b = 3:1, c = runif(3))
neworder <- c("c", "b", "a")
Jelas saya bisa melakukan:
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
tapi itu perlu menyalin seluruh dataset lagi. Apakah ada cara lain untuk melakukan ini?
r
data.table
Michael
sumber
sumber
setcolorder
memindahkan penunjuk kolom tanpa menggunakan memori kerja sama sekali. Kalimat tentang menggunakan memori kerja sebesar satu kolom itusetkey
benar - benar.setcolorder(df, c("someCol",colnames(dt)[!(colnames(dt) %in% c("someCol"))]))
setcolorder()
sekarang menerima kurang darincol(DT)
kolom untuk dipindahkan ke depan"Seseorang mungkin merasa lebih mudah untuk menggunakan solusi di atas, tetapi mengurutkan berdasarkan nomor kolom. Contoh: library (data.table)
sumber