2012-11-16 38 views
3

我是R新手。我们有一项任务,我正在研究。该任务是创建R包以模仿Anova表。我已经创建了在任务中强制执行的所有必要功能。该函数计算正确的值,但我不能使它显示为ANOVA表中的内建在anova()函数中的R可以。这是我的summary.oneway功能格式自定义汇总输出与R中的ANOVA输出相匹配

summary.oneway <- function(object, ...){ 

    #model <- oneway(object) 
    fval <- object$FValue 
    TAB <- list(t(object$AOV), "Mean Sq."= rbind(object$MSB, object$MSW), 
       "F Value" = fval, p.value = object$p.value) 

    res <- list(call=object$call, onewayAnova = TAB) 
    class(res) <- "summary.oneway" 
    res 
} 

这是输出:

 
Analysis of Variance: 
oneway.formula(formula = coag ~ diet, data = coagdata) 

[[1]] 
     Sum of Squares Deg. of Freedom 
diet    228    3 
Residual   112    20 

$`Mean Sq.` 
     1 
[1,] 76.0 
[2,] 5.6 

$`F Value` 
     1 
13.57143 

$p.value 
      1 
4.658471e-05 

实际ANOVA输出:

 
Analysis of Variance Table 

Response: coag 
      Df Sum Sq Mean Sq F value Pr(>F)  
diet  3 228 76.0 13.571 4.658e-05 *** 
Residuals 20 112  5.6      
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

我怎样才能实现这种格式?我在哪里以及在想什么?

非常感谢您的帮助。

六合

回答

2

方差分析输出使用的打印方法print.anova你可能要采取看看methods(print)特别stats:::print.anova

您很可能希望创建自己的打印功能

print.oneway <- function(object, ...) { 
    foo 
    bar 
} 
+0

谢谢为我指出正确的方向。我有你提到的打印功能,但它仍在打印列表。我使用了printCoefmat()并提供了data.frame作为参数,并且它工作正常。 – user1828605

+0

很高兴帮助。你也可以修改'class(obj)',以便使用适当的'print'方法。 –