我从这里、这里和这里的优秀资源中了解到,与依赖矢量扫描的相比,data.table利用自动索引(key即创建增压行名称)和基于二进制搜索的子集tidyverse。
我知道向量扫描需要扫描每一行并创建nrow(dataset)长度逻辑向量,而重复执行此操作效率不高。
我想知道是否有人可以帮助我准确地确定这两种方法如何意味着data.table与tidyverse需要按变量分组时相比,操作运行速度要快得多。即是否因为data.table自动索引group_by列并将其分解为分组的子集并对每个子集运行操作,而矢量扫描方法需要生成n = unique groups多个逻辑矢量,然后在整理结果之前对每个单独的逻辑矢量运行操作?
此外,根据data.table 小插图,
我们可以在多个列上设置键,并且列可以是不同的类型......
由于行被重新排序,一个 data.table 最多可以有一个键,因为它不能以多种方式排序。
我们可以在多列上设置键,而 adata.table最多只能有一个键,这意味着什么?即,在运行操作的任何时刻,是否只有一个引用键,但是当我们进行到整个操作的另一个组件时,引用键设置的哪一列可以更改?
先感谢您!