就像,我有四个 class gevp
,gpdp
和其他两个,我创建了通用函数,plot
并且summary
为每个四个类。我想知道是否可以只创建一个通用函数plot
,并且summary
对于四个类,就像在里面一样,我要选择我想要的类的对象。
问问题
136 次
2 回答
0
您可以在这里使用继承来发挥自己的优势,并将值向量分配给对象的类。当print
没有找到 的方法时class_x
,它将继续寻找类的方法generic_class
。
x <- structure("This is the object of class 'class-x'",
class = c("class_x", "generic_class"))
y <- structure("This is the object of class 'class-y'",
class = c("class_y", "generic_class"))
print.generic_class <- function(x, ...)
{
print("This prints the same thing for 'class_x' and 'class_y'")
}
x
y
于 2016-07-08T14:31:35.447 回答
0
如果您想了解有关管理类和对象的更多信息,我推荐 Hadley 的优秀书籍Advanced R。相关章节可在此处在线获取。我不知道您的底层代码,并且 S3 和更高级的 S4 系统之间存在差异,所以这是定义特定于您的类的函数的最简单方法。
关键是以 . 格式编写函数调用function.class
。该print.gevp
函数应该包含您已经编写的用于打印 class 对象的任何函数gevp
。请注意这一点,因为您最终可能会创建一个print
与打印无关的函数。# 生成测试数据 some_data <- rnorm(3) class(some_data) <- "gevp" more_data <- runif(3) class(more_data) <- "gpdp"
# Create examples of the print functions for both classes
print.gevp <- function(dta) {
print(paste0("Here is a value of class gevp: ", dta))
}
print.gpdp <- function(dta) {
print(paste0("Here is a value of class gpdp: ", dta))
}
# Notice how calling the generic print function now invokes the specific
# function for each class
print(some_data)
print(more_data)
于 2016-07-15T14:05:29.200 回答