Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中扩展data.frame类以继承data.frame方法_R_Oop_Inheritance_S4 - Fatal编程技术网

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

在R中扩展data.frame类以继承data.frame方法,r,oop,inheritance,s4,R,Oop,Inheritance,S4,我在定义继承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)) 相反,我想定义一个类“timeline”,它将保留所有d

我在定义继承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))
相反,我想定义一个类“timeline”,它将保留所有data.frames方法,但覆盖并添加几个方法(例如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
timeline在
setClass()之前使用
setOldClass(“data.frame”)