如何修改系统打印方法?

时间:2013-03-14 18:58:21

标签: r oop

Rglm)报告 Null Deviance 剩余偏差的默认print.glm打印方法,但不是相对的作为前者的一部分的后者的大小,即IMO,与评估模型拟合比绝对值更相关。

我想修改方法以使其打印相对偏差。 例如,现在R打印:

Degrees of Freedom: 36 Total (i.e. Null);  35 Residual
Null Deviance:      182.8 
Residual Deviance: 10.22    AIC: 63.39 

我希望它打印

Degrees of Freedom: 36 Total (i.e. Null);  35 Residual
Null Deviance:      182.8 
Residual Deviance: 10.22    AIC: 63.39 
Relative Residual Deviance: 5.59%

(注意:我知道如何计算和打印数字!)

不同的系统为此提供不同的设施;例如,Emacs挂钩,CLOS MOP有after-methods,但我不知道如何在R中执行此操作。

我如何在R中执行此操作? R是否有方法限定符?

谢谢!

PS。我不想显式编辑系统代码,我也不想复制和修改它:当R的下一个版本发布时,我不想编辑我的代码来合并所做的改进到系统print.glm

1 个答案:

答案 0 :(得分:2)

啊,结果很简单:

print.glm.system <- print.glm
print.glm <- function(glm, ...) { 
  print.glm.system(glm, ...)
  cat("Relative Residual Deviance: ",100*glm$deviance/glm$null.deviance,"%\n") 
  invisible(glm)
}

PS。这不是无限循环,因为print.glm.system包含原始的“系统”函数对象