Chciałbym zmienić kolejność kolumn w moim data.table
x
, biorąc pod uwagę wektor znaków nazw kolumn neworder
:
library(data.table)
x <- data.table(a = 1:3, b = 3:1, c = runif(3))
neworder <- c("c", "b", "a")
Oczywiście mogłem zrobić:
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
ale wymagałoby to ponownego skopiowania całego zbioru danych. Czy jest inny sposób, aby to zrobić?
r
data.table
Michael
źródło
źródło
setcolorder
przesuwa wskaźniki kolumn bez użycia pamięci roboczej. To zdanie o używaniu pamięci roboczej tak dużej jak jedna kolumna jest taksetkey
naprawdę.setcolorder(df, c("someCol",colnames(dt)[!(colnames(dt) %in% c("someCol"))]))
setcolorder()
teraz akceptuje mniej niżncol(DT)
kolumny do przeniesienia na wierzch ”Powyższe rozwiązanie może być łatwiejsze, ale zamiast tego posortuj dane według numeru kolumny. Na przykład: biblioteka (data.table)
źródło