我想问一下为什么当我在某个where
子集更改键变量的值时,下面示例中的 data.table 会丢失其键。以及是否有必要。
library(data.table)
example(data.table)
setkey(DT,x) # one key var only
DT[J("a"), x := "z"]
DT
x y v v2 m
1: z 1 13 84 5
2: z 3 13 84 5
3: z 6 13 84 5
4: c 1 7 NA 8
5: c 3 8 NA 8
6: c 6 9 NA 8
7: z 1 42 NA 42
8: z 3 42 NA 42
9: z 6 42 NA 42
这样就可以了。但是,我丢失了我的钥匙:
key(DT)
NULL
我猜想通过重新分配键x
上方的键列会被删除。也许应该记住关键,即应该有一个隐含setkey(DT,x)
的保留x
作为关键?谢谢!
我使用的是 1.8.6 版。顺便一提。