【发布时间】:2017-10-20 10:09:41
【问题描述】:
我正在尝试使用内部连接来连接两个 data.table。可能找不到匹配项,然后我想要一个具有正确列名的空 data.table。
dt1 <- data.table(A = c(1,2), B = c(1,2))
dt2 <- data.table(A = c(3,4), D = c(3,4))
setkey(dt1, A)
setkey(dt2, A)
dt1[dt2, nomatch = 0]
Error in xj[i] : invalid subscript type 'list'
merge(dt1, dt2,
all.x = F,
all.y = F)
Empty data.table (0 rows) of 3 cols: A,B,D
第二种方法给了我想要的答案。但我更喜欢第一种语法,因为它更快。有人知道我如何在不使用 trycatch 语句的情况下解决此错误。
【问题讨论】:
-
在最新版本的data.table中,您不需要使用
setkey,因此您可以将其简化为一行代码:dt1[dt2, on="A", nomatch=0]。阅读data.table page 上的自动索引部分了解更多信息。
标签: r merge data.table