我在定义一个继承 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
这样做的正确方法是什么?
最佳答案
使用 setOldClass("data.frame")
之前 setClass()
.
关于r - 在 R 中扩展 data.frame 类以继承 data.frame 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39521723/