在R中扩展data.frame类以继承data.frame方法

4

我有些困难,无法定义一个继承所有data.frame方法的类。例如,如果我要定义一个类timeline,可以表示为一个data.frame:

data.frame(task = c("Read Permutation City", "Learn S4 oop"), 
           from = c(Sys.Date(), Sys.Date()),
           to = c(Sys.Date() + 5, Sys.Date() + 1))

相反,我想定义一个名为"timeline"的类,该类将保留所有data.frame方法,但会覆盖和添加几种方法(例如plot、summary和window)。在其他语言中,这是相当简单的。

我想使用S4类结构来实现这一点。我尝试使用contains参数实现S4类,但是,我一定做错了什么,因为结果与从data.frame中预期的不同。

timeline <- setClass(Class = "timeline", contains = "data.frame")

timeline <- function(task, from, to) {
  new("timeline", data.frame(task = task, from = from, to = to))
}

tm <- timeline("Run", Sys.Date(), Sys.Date() + 5)
getClass("timeline") # Class "timeline" .... Extends: Class "data.frame", directly
inherits(tm, "data.frame") # TRUE

nrow(tm) # 0
ncol(tm) # 3

tm # Prints S4 info
print(tm) # Expected output

什么是正确的做法?
1个回答

1

setClass() 之前使用 setOldClass("data.frame")


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接