Этот (очень простой) вопрос является результатом обмена здесь.
В документации для setkey()
указано:
setkey() сортирует таблицу data.table и маркирует ее как отсортированную. Сортированные столбцы являются ключом. Ключ может быть любым столбцом в любом порядке. Столбцы сортируются в порядке возрастания всегда. Таблица изменена на ссылка... (выделено мной)
Я всегда интерпретировал это как означающее, что 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)
точно?