データが入力された data.table と空の別のテーブルとの間でマージを行うと、結果の data.table に NA 行が 1 つ導入されます。
a = data.table(c=c(1,2),key='c')
b = data.table(c=3,key='c')
b=b[c!=3]
b
# Empty data.table (0 rows) of 1 col: c
merge(a,b,all=T)
# c
# 1: NA
# 2: 1
# 3: 2
なんで?merge.data.frame の場合と同様に、 data.table の行のみが返されると予想してa
いました。
> merge.data.frame(a,b,all=T,by='c')
# c
#1 1
#2 2