rbind`data.tables`并保存密钥

Bro*_*ieG 9 indexing r data.table

我正在寻找类似于插入已经键入的SQL表的行为,其中添加的新行被插入到现有键中.例如,在这种情况下:

dt <- data.table(a=1:10)
setkey(dt, a)
tables()
#      NAME NROW MB COLS KEY
# [1,] dt     10 1  a    a  
dt.2 <- rbindlist(list(dt, data.table(a=1:5)))
tables()
#      NAME NROW MB COLS KEY
# [1,] dt     10 1  a    a  
# [2,] dt.2   15 1  a      
Run Code Online (Sandbox Code Playgroud)

我希望可以选择dt.2"继承"密钥(显然是使用增量数据更新)dt,而不是实际发生的密钥.

起初我对丢失密钥感到有些惊讶,但这显然是记录在案的行为.

有没有一个干净的方式这样做,而不是setkey在每次rbind/ 后调用rbindlist

Mat*_*wle 9

从本质上讲,data.table目前根本不支持行插入,更不用说进入键控表. rbind创造一个新的,data.table所以不快或内存效率.

类似的问题在这里:

如何在data.table中按引用删除行?

目前,典型的工作流程是从磁盘加载使用文件freadrbindlist使用RODBC或类似的数据库他们在一起,或加载数据.

我们想添加快速行插入,但还没有完成.