显示data.table对象中的行名称 [英] Display row names in a data.table object

查看:151
本文介绍了显示data.table对象中的行名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

参考:尝试回答这个非常基本的问题,我突然意识到我不能在 data.table 中显示 rownames code> object

Reference: While trying to answer this very basic question, I suddenly realized that I wasn't able to display rownames in a data.table object

玩具示例

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

但是当显示数据本身时,行名称保持不变

But when displaying the data itself, row names remains unchanged

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

我假设 data.table 忽略不必要的属性以提高效率,但属性似乎不同意

I would assume data.table ignores unnecessary attributes for efficiency purposes, but attributes seem to disagree

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


推荐答案

data.table 不支持行名称。这是有意的,因为行名称是一个不好的设计选择,因为它们使用起来比列更麻烦(尤其是在 data.table 中,比 data.frame 更容易处理),并且只是什么类型的数据列可以表示的一个子集(记住数据中的行名称)。框架只是字符向量,而列可以是任何东西)。

data.table doesn't support row names. This is intentional, as row names are a bad design choice, because they are far more cumbersome to use than columns (and especially so in data.table, where columns are so much easier to deal with than in data.frame) and are only a subset of what kind of data columns can represent (recall that row names in data.frame are a character vector only, whereas columns can be anything).

这篇关于显示data.table对象中的行名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆