data.table 的用户指定属性被删除

Posted

技术标签:

【中文标题】data.table 的用户指定属性被删除【英文标题】:User-specified attributes of data.table get removed 【发布时间】:2015-12-16 17:24:30 【问题描述】:

我有一个函数返回一个data.table,并附加了各种有用的用户定义属性。不过,我注意到,当操作 data.table 时,这些属性会消失。

library(data.table)
my_dt <- data.table(col1 = rnorm(20), col2 = letters[1:20])

# store some user attribute
attr(my_dt, 'title') <- 'This is my data.table'
# now it's there
attributes(my_dt)
# but here it's gone
attributes(my_dt[order(col1)]) 

对于上述情况(除了将它们存储在单独的对象中),有什么方法可以使 data.table 的属性“持久”?

似乎属性对于常规data.frames 确实存在

my_df <- data.frame(col1 = rnorm(20), col2 = letters[1:20])

# store some user attribute
attr(my_df, 'title') <- 'This is my data.frame'
# there it is
attributes(my_df) 
# still there
attributes(my_df[order(my_df$col1), ]) 

【问题讨论】:

目前不支持。开放功能请求可以在data.table#995找到。 啊,谢谢。没有找到任何更早的讨论。不过,我将把问题留在这里,因为您已经从 github 链接到它作为用户对该功能感兴趣的证据。 【参考方案1】:

功能已添加到 1.12.0,当子集由 Matt 进行并行处理时。所以属性现在被保留了。

library(data.table)
my_dt <- data.table(col1 = rnorm(20), col2 = letters[1:20])

attr(my_dt, 'title') <- 'This is my data.table'
attr(my_dt, 'title')
#[1] "This is my data.table"
attr(my_dt[order(col1)], 'title')
#[1] "This is my data.table"

【讨论】:

哇,很高兴听到并感谢您(多年后)的跟进!

以上是关于data.table 的用户指定属性被删除的主要内容,如果未能解决你的问题,请参考以下文章

linux用户和组的创建与管理!

R:在用户定义的函数中使用 get 和 data.table

C# 将用户添加到 Active Directory - 指定给目录服务的属性语法无效

强制删除正在连接的Oracle用户,以删除SDE用户为例

root用户被提示:Operation not permitted

XML 通过属性值 JavaScript 删除节点