2

如果我尝试加入两个具有相同列名的 data.tables,则将.1附加到其中一个名称,但我似乎无法访问表达式j部分中的名称。DT[]

例子:

DT1 = data.table(name = letters, value = rnorm(26))
DT2 = data.table(name = letters, value = rnorm(26))
setkey(DT1, name)
DT1[DT2, value.1 - value]       # this doesn't work
DT1[DT2][, value.1 - value]     # this works

这个问题的动机是我认为单次调用会更快,事实证明并非如此,导致一个单独的问题:为什么 DT1[DT2][, value1-value] 比 DT1[DT2 快, value1-value] 列较少的data.table 上?

4

1 回答 1

2

可以引用data.tablein的列i,即DT2的列,前缀i如下:

DT1[DT2, list(val=i.value-value)]
   name val
1:    a   1
2:    b   1
3:    c   1
4:    d   1
5:    e   1

# Data used
DT1 <- data.table(name=letters[1:5], value=2:6)
DT2 <- data.table(name=letters[1:5], value=3:7)
setkey(DT1, name)
于 2013-07-18T09:02:02.027 回答