キー付きの data.table があり、別の複数列キーxを使用してマージする必要があることに気付きました。
(i) のキーの設定とリセット、および (ii) のコピーを別のキーxで追跡することは避けたいです。xここにいくつかのサンプルデータと私の現在のアプローチがあります:
require(data.table)
options(datatable.verbose=TRUE)
set.seed(1)
n <- 10
m <- 2
samp <- function(n) sample(1:9,n,replace=T)
x <- data.table(A = samp(n),B = samp(n),C = samp(n),key="A")
y <- x[samp(m),list(B,C,D=samp(m))]
# this works:
x[,.SD,key="B,C"][y]
# B C A D
# 1: 7 6 6 5
# 2: 9 4 6 2
そのアプローチは機能しますが、コメントを受け取ります
...j は名前付きリストです。とても非効率です…
名前付きリストは.SD. これを行うためのより良い、またはより標準的な方法はありますか?
keyを使用しても使用しkeybyなく.SDても効果がないようです。
key(x[,,keyby="B,C"]) # A
key(x[,,key="B,C"]) # A