Я хотел бы изменить порядок столбцов в моем 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
но это потребует повторного копирования всего набора данных. Есть другой способ сделать это?
r
data.table
Майкл
источник
источник
setcolorder
перемещает указатели столбцов без использования какой-либо рабочей памяти. Это предложение об использовании рабочей памяти размером с один столбец почтиsetkey
действительно.setcolorder(df, c("someCol",colnames(dt)[!(colnames(dt) %in% c("someCol"))]))
setcolorder()
теперь принимает меньшеncol(DT)
столбцов, которые нужно переместить на переднийВозможно, будет проще использовать приведенное выше решение, но вместо этого выполните сортировку по номеру столбца. Например: библиотека (data.table)
источник