При назначении по ссылке с помощью data.table
с использованием столбца из второго data.table
результаты несовместимы. Если совпадений по ключевым столбцам как data.table
s нет совпадений, появляется выражение-ассистент y := y
полностью игнорируется - даже не возвращаются NA
.
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
Однако, когда есть частичное совпадение, несогласованные столбцы имеют местозаполнитель NA
.
dt2[, id := 2:3]
print(dt1[dt2, y := y])
## id x y
## 1: 1 3 NA # <-- placeholder NA here
## 2: 2 4 5
Это приводит к хаосу в более позднем коде, который предполагает, что во всех случаях существует столбец y
. В противном случае мне приходится писать громоздкие дополнительные проверки, чтобы учесть оба случая.
Есть ли элегантный способ преодоления этой несогласованности?