3
我无法定义继承所有data.frame方法的类。例如,如果我是定义一个类时间表这可以表示为一个data.frame:在R中扩展data.frame类以继承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))
相反,我想定义一个类“时间表”,将保留所有的data.frames方法,但重写并添加几种方法(如绘图,汇总和窗口)。在其他语言中,这是相当简单的。
我想使用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
这样做的正确方法是什么?