首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >记录'[.data.table‘]

记录'[.data.table‘]
EN

Stack Overflow用户
提问于 2014-09-21 22:19:47
回答 1查看 385关注 0票数 4

我有一个用户定义的对象,它有一个具有3个属性的类。

代码语言:javascript
复制
i.e. > class(data)
     [1] "cumulative" "data.table" "data.frame"

我希望对[进行重新编码,以便当我在对象上调用它时,它使用data.table定义的函数,即[.data.table,但返回我的用户定义的类。我该怎么做?

我尝试创建一个函数,如下所示,还有一些其他的变体,但我无法让它工作

代码语言:javascript
复制
'[.cumulative' <- function(x,i,j,...) {
  y <- NextMethod(.Generic)(x,i.j)
  class(y) <- .Class
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-21 23:56:43

这只虫子已在当前的开发版本1.9.3中得到修正。来自新闻

如果另一个类继承自data.table;例如,class(DT) == c("UserClass", "data.table", "data.frame"),那么DT[...]现在在结果中保留UserClass。感谢Daniel的报道,#5296 (git #64)。测试增加。

代码语言:javascript
复制
require(data.table) ## 1.9.2
dt = data.table(x=1:5, y=6:10)
setattr(dt, 'class', c("foo", "data.table", "data.frame"))
class(dt)
# [1] "foo"        "data.table" "data.frame"

## bug...
class(dt[, .N, by=x])
# [1] "data.table" "data.frame"

# -------------------------------

require(data.table) ## 1.9.3
dt = data.table(x=1:5, y=6:10)
setattr(dt, 'class', c("foo", "data.table", "data.frame"))
class(dt)
# [1] "foo"        "data.table" "data.frame"

## bug fixed
class(dt[, .N, by=x])
# [1] "foo"        "data.table" "data.frame"
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25964469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档