使用s3扩展汇总功能

时间:2017-11-16 14:53:48

标签: r

使用下面的代码我尝试重写汇总函数,以便只返回系数:

summary <- function(x)
   {
      UseMethod("GetFirst",x)
   }

summary <- function(x)
  {
      return(x$Coefficient)
}

class(summary) <- "mysum"

tosum = as_tibble(c(1,2,3))
tosum

summary(tosum)

这会返回错误:

> summary(tosum)
NULL
Warning message:
Unknown or uninitialised column: 'Coefficient'. 

如何阅读摘要函数的可用属性并使用s3调用?

1 个答案:

答案 0 :(得分:0)

summary已经是通用函数,因此您不需要UseMethod。为了扩展其功能,您需要添加另一个适用于您想要的类的方法。

查看示例:

summary.myclass <- function(x)
{
  return(x$Coefficient)
}


tosum = data.frame(Coefficient = c(1,2,3))
class(tosum) <- c('myclass', 'data.frame')
summary(tosum)
#[1] 1 2 3

这里我为summary类定义myclass(称为方法)的扩展名。当我在tosum使用该类的摘要时,会调度summary.myclass并返回列Coefficiet