Me gustaría columnas de reabastecimiento en mi data.table
x
, dado un vector de caracteres de nombres de columna, neworder
:
library(data.table)
x <- data.table(a = 1:3, b = 3:1, c = runif(3))
neworder <- c("c", "b", "a")
Obviamente podría hacer:
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
pero eso requeriría copiar todo el conjunto de datos nuevamente. Hay otra manera de hacer esto?
r
data.table
Miguel
fuente
fuente
setcolorder
mueve los punteros de las columnas sin utilizar ninguna memoria de trabajo. Esa frase sobre el uso de la memoria de trabajo tan grande como una columna es casisetkey
real.setcolorder(df, c("someCol",colnames(dt)[!(colnames(dt) %in% c("someCol"))]))
setcolorder()
ahora acepta menos dencol(DT)
columnas para ser movidas al frente"A uno le puede resultar más fácil usar la solución anterior, pero en su lugar ordenar por número de columna. Por ejemplo: biblioteca (data.table)
fuente