如何在 dplyr 中获取 full_join 以保留 data.tables?

How can I get full_join in dplyr to preserve data.tables?

我正在使用 dplyrfull_join 合并两个 data.tables,如下所示:

library(data.table)
library(dplyr)

set.seed(90088)
dt1 <- data.table(id = 1:10, var1 = sample(20:30, 10, replace = T), key = "id")
dt2 <- data.table(id = 1:10, var2 = sample(40:50, 10, replace = T), key = "id")

both <- full_join(dt1, dt2)

但结果是 data.frame,而不是 data.table。

class(both)
# [1] "data.frame"

我希望稍后能够在我的代码中利用 data.tables 的速度(最好使用 dplyr)。 full_join 中是否有一些选项可以保留 data.tables,或者我是否必须使用 data.table 语法进行合并?

查看 latest dplyr docs (currently v0.4.1),与 data.frame 方法不同,data.table (join.tbl_dt) 的底层连接方法尚不支持 full_join() (join.tbl_df).

我在 dplyr github 上的搜索表明目前没有针对此的突出功能请求。因此,我的建议是,如果您希望看到它得到实施,请提出请求,并在此期间使用 merge