Answers:
用途setcolorder()
:
library(data.table)
x <- data.table(a = 1:3, b = 3:1, c = runif(3))
x
# a b c
# [1,] 1 3 0.2880365
# [2,] 2 2 0.7785115
# [3,] 3 1 0.3297416
setcolorder(x, c("c", "b", "a"))
x
# c b a
# [1,] 0.2880365 3 1
# [2,] 0.7785115 2 2
# [3,] 0.3297416 1 3
来自?setcolorder
:
在
data.table
说法,所有set*
功能通过引用改变自己的输入。就是说,除了临时工作存储器(它只有一列)之外,根本不进行任何复制。
因此应该非常有效。有关?setcolorder
详细信息,请参见。
setcolorder(df, c("someCol",colnames(dt)[!(colnames(dt) %in% c("someCol"))]))
可能会发现使用上述解决方案更容易,但可以按列号进行排序。例如:library(data.table)
> x <- data.table(a = 1:3, b = 3:1, c = runif(3))
> x
a b c
[1,] 1 3 0.2880365
[2,] 2 2 0.7785115
[3,] 3 1 0.3297416
> setcolorder(x, c(3,2,1))
> x
c b a
[1,] 0.2880365 3 1
[2,] 0.7785115 2 2
[3,] 0.3297416 1 3
setcolorder
一下:完全不使用任何工作内存就移动列指针。关于使用多达一列的工作内存的那句话setkey
确实是真的。