使用键和索引

官方的小插曲是这个主题的最佳介绍:

键与索引

data.table 可以通过一系列列键控,告诉感兴趣的函数数据按这些列排序。要获取或设置密钥,请使用 ?key 中记录的功能。

同样,函数可以利用 data.table 的索引。每个索引 - 和一个表可以有多个 - 存储有关一系列列的数据顺序的信息。像键一样,索引可以加速某些任务。要获取或设置索引,请使用 ?indices 中记录的功能。

索引也可以自动设置(目前一次只能用于一列)。有关其工作原理以及如何在必要时禁用它的详细信息,请参阅 ?datatable.optimize

验证和更新

密钥列中允许缺少值。

键和索引存储为属性,并且可能意外地不对应于表中数据的实际顺序。许多函数在使用之前检查密钥或索引的有效性,但值得记住。

更新后删除键和索引,而不明显的是保留排序顺序。例如,从 DT = data.table(a=c(1,2,4), key="a") 开始,如果我们像 DT[2, a := 3] 一样更新,则密钥被破坏。