我有一个带键的 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