ฉันต้องการเรียงลำดับคอลัมน์ในของฉันdata.table
x
โดยให้เวกเตอร์อักขระของชื่อคอลัมน์neworder
:
library(data.table)
x <- data.table(a = 1:3, b = 3:1, c = runif(3))
neworder <- c("c", "b", "a")
เห็นได้ชัดว่าฉันทำได้:
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
แต่จะต้องมีการคัดลอกชุดข้อมูลทั้งหมดอีกครั้ง มีวิธีอื่นในการทำเช่นนี้หรือไม่?
setcolorder
ย้ายตัวชี้คอลัมน์ไปรอบ ๆ โดยไม่ต้องใช้หน่วยความจำในการทำงานเลย ประโยคที่เกี่ยวกับการใช้หน่วยความจำในการทำงานที่มีขนาดใหญ่เท่ากับหนึ่งคอลัมน์นั้นเป็นเรื่องsetkey
จริง