Подтвердить что ты не робот

Отображать имена строк в объекте data.table

Ссылка: пытаясь ответить на этот очень простой вопрос, я вдруг понял, что я не смог отобразить rownames в объекте data.table

Пример игрушки

library(data.table)
DT <- data.table(A = letters[1:3])
DT
##    A
## 1: a
## 2: b
## 3: c
row.names(DT) <- 4:6
row.names(DT)
## [1] "4" "5" "6" # seem to work

или

rownames(DT) <- 7:9
rownames(DT)
## [1] "7" "8" "9" # seems to be ok too

Но при отображении самих данных имена строк остаются неизменными

DT
##    A
## 1: a
## 2: b
## 3: c

Я бы предположил, что data.table игнорирует ненужные атрибуты для целей эффективности, но attributes, похоже, не согласен

attributes(DT)
# $names
# [1] "A"
# 
# $row.names
# [1] 7 8 9
# 
# $class
# [1] "data.table" "data.frame"
# 
# $.internal.selfref
# <pointer: 0x0000000000200788>
4b9b3361

Ответ 1

Это более или менее дословный комментарий.

data.table не поддерживает имена строк. Это преднамеренно, поскольку имена строк являются плохим выбором дизайна, потому что они гораздо более громоздки для использования, чем столбцы (и особенно это относится к data.table, где столбцы гораздо проще обрабатывать, чем в data.frame), и только подмножество того, какие столбцы данных могут представлять (напомним, что имена строк в data.frame являются символьным вектором, тогда как столбцы могут быть любыми).