Try package ref. Specifically, its refdata
class.
What you might be missing about data.table
is that when grouping (by=
parameter) the subsets of data are not copied, so that's fast. [Well technically they are but into a shared area of memory which is reused for each group, and copied using memcpy which is much faster than R's for loops in C.]
:=
in data.table
is one way to modify a data.table
in place. data.table
departs from usual R programming style in that it is not copied-on-write. User has to call copy()
explicitly to copy a (potentially very large) table, even within a function.
You're right that there isn't a mechanism like refdata
built into data.table
. I see what you mean and it would be a nice feature. refdata
should work on a data.table
, though, and you might be fine with data.frame
(but be sure to monitor copies with tracemem(DF)
).
There is also idata.frame
(immutable data.frame
) in package plyr
you could try.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…