6

我想知道如何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方法直接工作。

4

2 回答 2

7

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

您在那里所做的是summary为 S3 类创建一个方法。您可能想阅读 S3 课程。

于 2013-09-08T13:45:51.830 回答
2

没有summary.list功能。如果要使用该summary.default功能,则需要使用lapplyor sapply

> 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
于 2013-09-08T15:01:56.537 回答