Отображать имена строк в объекте 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>
Ответы
Ответ 1
Это более или менее дословный комментарий.
data.table
не поддерживает имена строк. Это преднамеренно, поскольку имена строк являются плохим выбором дизайна, потому что они гораздо более громоздки для использования, чем столбцы (и особенно это относится к data.table
, где столбцы гораздо проще обрабатывать, чем в data.frame
), и только подмножество того, какие столбцы данных могут представлять (напомним, что имена строк в data.frame
являются символьным вектором, тогда как столбцы могут быть любыми).