Gostaria de reordenar as colunas no meu data.table
x
, dado um vetor de caracteres de nomes de coluna neworder
:
library(data.table)
x <- data.table(a = 1:3, b = 3:1, c = runif(3))
neworder <- c("c", "b", "a")
Obviamente, eu poderia fazer:
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
mas isso exigiria copiar todo o conjunto de dados novamente. Há outra maneira de fazer isso?
r
data.table
Michael
fonte
fonte
setcolorder
move os ponteiros da coluna sem usar nenhuma memória de trabalho. Aquela frase sobre o uso de memória de trabalho com o tamanho de uma coluna é praticamentesetkey
real.setcolorder(df, c("someCol",colnames(dt)[!(colnames(dt) %in% c("someCol"))]))
setcolorder()
agora aceita menos do quencol(DT)
colunas para serem movidas para a frente"Pode ser mais fácil usar a solução acima, mas em vez disso, classifique pelo número da coluna. Por exemplo: biblioteca (data.table)
fonte