我一直试图将多个data.table合并到一个数据表中。 所有数据表都具有相同的键。
s1.dt,s2.dt和s3.dt是具有公用列o和d的三个数据表。
目前,我正在对三个数据表分别执行此操作,但是在整个数据集中,总共有100个这样的数据表。 所以我想知道是否有R函数可以这样做以避免繁琐的重复代码?
这是我的代码:
s1.dt= data.table(s1, key = c("o","d"))
s2.dt= data.table(s2, key = c("o","d"))
s3.dt= data.table(s3, key = c("o","d"))
system.time(s12.dt<-merge(s1.dt,s2.dt,all = T, allow.cartesian = T ))
system.time(s123.dt<-merge(s12.dt,s3.dt,all = T, allow.cartesian = T ))
答案 0 :(得分:1)
我们将数据集保存在list
中,并使用Reduce
来merge
全部
Reduce(function(...) merge(..., all = TRUE, allow.cartesian = TRUE),
list(s1.dt, s2.dt, s3.dt))
如果有许多数据集,则无需输入对象名称来创建列表,而应将paste
或ls
与mget
一起使用
mget(ls(pattern = "^s\\d+\\.dt$"))