R data.table内部联接在未找到匹配项时产生错误

R data.table内部联接在未找到匹配项时产生错误,r,merge,data.table,R,Merge,Data.table,我正在尝试使用内部联接联接两个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 'lis

我正在尝试使用内部联接联接两个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

dt1我认为这只是一个打字错误:

library(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] #instead of t1[t2, nomatch = 0]
Empty data.table (0 rows) of 3 cols: A,B,D
库(data.table)

dt1我无法再现第一个示例中的错误。。我想你是说

dt1[dt2, nomatch = 0]
?

我得到:

Empty data.table (0 rows) of 3 cols: A,B,D

使用最新版本的R和data.table

在最新版本的data.table中,您不需要使用设置键
,因此可以将其简化为一行代码:
dt1[dt2,on=“a”,nomatch=0]
。有关更多信息,请阅读上有关自动索引的部分。