我有两个data.tables。一个包含有关人员的数据(DT
,而另一个包含有关项目的数据(DT2
)。它们不共享任何变量,但是我想将它们两者合并,以便将DT
的每一行与整个data.table DT2
合并。因此,组合的data.table应该是nrow(DT) * nrow(DT2)
长。
我有一个使用lapply()
的简单解决方案,但是它似乎效率不高(特别是对于大型data.tables),我想知道是否还有更多的data.table-way来实现。 / p>
library(data.table)
set.seed(1)
DT <- data.table(
id = 1:3,
value = rnorm(3)
)
DT2 <- data.table(
id2 = 1:2,
value2 = sample(1:10, 2)
)
# desired output
out <- rbindlist(lapply(1:nrow(DT), function(r) {
cbind(DT[r, ], DT2)
}))
out
id value id2 value2
1: 1 -0.6264538 1 7
2: 1 -0.6264538 2 2
3: 2 0.1836433 1 7
4: 2 0.1836433 2 2
5: 3 -0.8356286 1 7
6: 3 -0.8356286 2 2