gpt4 book ai didi

r - data.table - setkey(...) 是否创建索引或对数据表中的行进行物理重新排序?

转载 作者:行者123 更新时间:2023-12-03 14:15:50 24 4
gpt4 key购买 nike

这个(非常基本的)问题是交换的结果here .
setkey() 的文档状态:

setkey() sorts a data.table and marks it as sorted. The sorted columns are the key. The key can be any columns in any order. The columns are sorted in ascending order always. The table is changed by reference... (emphasis added)



我一直将其解释为 setkey()创建索引,而不是物理地重新排列数据表的行(类似于索引数据库表)。但如果这是真的,那么删除键(使用 setkey(DT,NULL) )应该删除索引并将数据表恢复到原始的未排序顺序。这不是发生的事情:
library(data.table)
DT <- data.table(a=3:1, b=1:3, c=5:7); DT
a b c
1: 3 1 5
2: 2 2 6
3: 1 3 7
setkey(DT,a); DT
a b c
1: 1 3 7
2: 2 2 6
3: 3 1 5
setkey(DT,NULL)
a b c
1: 1 3 7
2: 2 2 6
3: 3 1 5

所以两个问题:

1:如果行重新排列(排序),那么“引用更改”是什么意思?

2: setkey(DT,NULL) 是什么意思?究竟是做什么的?

最佳答案

  • 行已排序。这里的“通过引用更改”意味着没有整个表的复制,并且行只是交换。
  • setkey(DT, NULL)相当于setattr(DT, "sorted", NULL) .它只是取消设置“排序”属性。
  • 关于r - data.table - setkey(...) 是否创建索引或对数据表中的行进行物理重新排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20076511/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com