data.table parlance, all
set* functions change their input by reference. That is, no copy is made at all, other than temporary working memory, which is as large as one column. The only other
data.table operator that modifies input by reference is
:=. Check out the
See Also section below for other
setcolorder reorders the columns of data.table, by reference, to the new order provided.
Character vector of the new column name ordering. May also be column numbers. If
data.table columns, the idiomatic way is to use
setcolorder(x, neworder), instead of doing
x <- x[, neworder, with=FALSE]. This is because the latter makes an entire copy of the
data.table, which maybe unnecessary in most situations.
setcolorder also allows column numbers instead of names for
neworder argument, although we recommend using names as a good programming practice.
The input is modified by reference, and returned (invisibly) so it can be used in compound statements. If you require a copy, take a copy first (using
DT2 = copy(DT)). See