Попробуйте пакет ref . В частности, его refdata
класс.
Что вам может не хватать в data.table
, так это то, что при группировке (параметр by=
) подмножества данных не копируются, так что это быстро. [Технически, они находятся в общей области памяти, которая повторно используется для каждой группы и копируется с использованием memcpy, который намного быстрее, чем R для циклов в C.]
:=
в data.table
- это один из способов изменить data.table
на месте. data.table
отличается от обычного стиля программирования R в том смысле, что он не скопирован при записи. Пользователь должен явно вызвать copy()
, чтобы скопировать (потенциально очень большую) таблицу, даже внутри функции.
Вы правы, что в data.table
не встроен механизм, подобный refdata
. Я понимаю, что вы имеете в виду, и это было бы неплохо. refdata
должен работать на data.table
, и вы можете работать с data.frame
(но обязательно следите за копиями с tracemem(DF)
).
Существует также idata.frame
(неизменный data.frame
) в пакете plyr
, который вы можете попробовать.