编辑:问题似乎是由于我使用的R和data.table版本中的错误。感谢@Arun指出它。
我在使用R中的数据表时遇到问题,在连接两个data.tables(使用语法setkey(DT,x)
)之后直接调用X[Y]
会导致新连接表的列独立出现彼此之间,导致价值彼此分离。请注意,如果我在调用setkey
之前对新连接的表执行操作,则不会发生这种情况。
我有data.table ab
和data.table bc
:
> ab
a b
1: 1 A
2: 2 B
3: 3 C
4: 4 D
5: 5 E
6: 6 F
7: 1 G
> bc
b c
1: A 101
2: B 102
3: C 103
4: D 104
5: E 105
6: F 106
7: G 101
在分配键后加入两个键会得到预期的结果:
> setkey(ab, b)
> setkey(bc, b)
> comb <- ab[bc]
> comb
b a c
1: A 1 101
2: B 2 102
3: C 3 103
4: D 4 104
5: E 5 105
6: F 6 106
7: G 7 101
但是当我致电setkey
将bc
的密钥更改为c
时,comb
中的值会发生变化,就像列b
和{ {1}}的排序与列c
无关:
a
为什么调用> setkey(bc, c)
> comb
b a c
1: A 1 101
2: G 2 101
3: B 3 102
4: C 4 103
5: D 5 104
6: E 6 105
7: F 1 106
会导致通过将setkey(DT,x)
加入另一个表而创建的新data.table
中的列导致新表中的列独立于其他列?
这是我的DT
:
sessionInfo()
答案 0 :(得分:1)
上述行为是由于R(3.1.1)和data.table(1.9.2)版本中的错误造成的。将R更新到版本3.1.2并将data.table更新到1.9.4解决了问题,并且行为符合预期。
感谢@Arun建议我更新。