dtルックアップ テーブルに従って変数を作成したいと思いますk。で対象の変数を抽出する方法によっては、予期しない結果が得られkます。
dt <- data.table(x=c(1:10))
setkey(dt, x)
k <- data.table(x=c(1:5,10), b=c(letters[1:5], "d"))
setkey(k, x)
dt[,b:=k[.BY, list(b)],by=x]
dt  #unexpected results
#      x  b
#  1:  1  1
#  2:  2  2
#  3:  3  3
#  4:  4  4
#  5:  5  5
#  6:  6  6
#  7:  7  7
#  8:  8  8
#  9:  9  9
# 10: 10 10
dt <- data.table(x=c(1:10))
setkey(x, x)
dt[,b:=k[.BY]$b,by=x]
dt  #expected results
#      x  b
#  1:  1  a
#  2:  2  b
#  3:  3  c
#  4:  4  d
#  5:  5  e
#  6:  6 NA
#  7:  7 NA
#  8:  8 NA
#  9:  9 NA
# 10: 10  d
なぜこれが起こっているのか誰でも説明できますか?