キー付きの 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