通过引用行为进行的data.table赋值不一致

mch*_*hen 14 r data.table

当通过引用data.table使用来自第二列的列进行分配时data.table,结果是不一致的.当两个data.tables 的键列都没有匹配时,似乎y := y完全忽略了分配表达式- 甚至NA不返回s.

library(data.table)
dt1 <- data.table(id = 1:2, x = 3:4, key = "id")
dt2 <- data.table(id = 3:4, y = 5:6, key = "id")
print(dt1[dt2, y := y])
##    id x     # Would have also expected column:   y
## 1:  1 3     #                                   NA
## 2:  2 4     #                                   NA
Run Code Online (Sandbox Code Playgroud)

但是,当存在部分匹配时,不匹配的列具有占位符NA.

dt2[, id := 2:3]
print(dt1[dt2, y := y])
##    id x  y
## 1:  1 3 NA    # <-- placeholder NA here
## 2:  2 4  5
Run Code Online (Sandbox Code Playgroud)

这会对后来的代码造成严重破坏,该代码假定y在所有情况下都存在列.否则,我不得不编写繁琐的额外检查以考虑这两种情况.

有这种不一致的优雅方法吗?

Aru*_*run 2

通过最近的提交,这个问题#759现已在 v1.9.7 中修复。它按预期工作nomatch=NA(当前默认值)。

require(data.table)
dt1 <- data.table(id = 1:2, x = 3:4, key = "id")
dt2 <- data.table(id = 3:4, y = 5:6, key = "id")
dt1[dt2, y := y][]
#    id x  y
# 1:  1 3 NA
# 2:  2 4 NA
Run Code Online (Sandbox Code Playgroud)