如何让“摘要”与R中的自定义类一起使用

时间:2013-09-08 13:29:55

标签: r package

我想知道如何让我summary(object)使用我正在创建的包中的自定义类。例如,如果您运行以下命令:

testfunction <- function(x) {
  x.squared <- x^2
  x.double <- 2*x
  x.triple <- 3*x

  result <- list(squared = x.squared, double = x.double, triple = x.triple)
  class(result) <- "customclass"
  result
}

x <- rnorm(100)
output <- testfunction(x)
summary(output)

你会看到输出很无用。但是,我似乎无法找到如何控制此输出。如果有人可以指导我,我会感激不尽。

(当然,我可以制作一个自定义的摘要功能,例如summary.Custom(object),但我更喜欢让常规summary方法直接使用。

2 个答案:

答案 0 :(得分:4)

编写一个名为summary.customclass的函数,其参数与summary相同(请参阅args(summary))。

您正在做的是为S3类创建summary的方法。您可能想要阅读S3类。

答案 1 :(得分:2)

没有summary.list功能。如果您想使用summary.default功能,则需要使用lapplysapply

> lapply(output, summary)
$squared
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
 0.000013  0.127500  0.474100  1.108000  1.385000 11.290000 

$double
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
-6.7190 -1.0480  0.4745  0.3197  1.8170  5.1870 

$triple
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
-10.0800  -1.5720   0.7117   0.4796   2.7260   7.7800 

或者:

> sapply(output, summary)
          squared  double   triple
Min.    1.347e-05 -6.7190 -10.0800
1st Qu. 1.275e-01 -1.0480  -1.5720
Median  4.741e-01  0.4745   0.7117
Mean    1.108e+00  0.3197   0.4796
3rd Qu. 1.385e+00  1.8170   2.7260
Max.    1.129e+01  5.1870   7.7800