0

就像,我有四个 class gevpgpdp和其他两个,我创建了通用函数,plot并且summary为每个四个类。我想知道是否可以只创建一个通用函数plot,并且summary对于四个类,就像在里面一样,我要选择我想要的类的对象。

4

2 回答 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 回答