创建打印summary.dynlm的summary.newclass

创建打印summary.dynlm的summary.newclass,r,methods,R,Methods,问题:我想建立在Achim Zeileis的dynlm包中的summary.dynlm的基础上。我已经能够使用summary.lm执行以下操作,但不能使用summary.dynlm 我正在慢慢地学习R的高级编程方面,并且正在将我自己的软件包转换成一个使用S3方法的软件包,以获得更清晰的函数输出。在这种情况下,我希望让我的方法运行现有的方法,因为我只是做一些小的添加 为简单性和再现性,请参见以下代码: library(dynlm) mod <- dynlm(interest ~ loggnp

问题:我想建立在Achim Zeileis的dynlm包中的
summary.dynlm
的基础上。我已经能够使用
summary.lm
执行以下操作,但不能使用
summary.dynlm

我正在慢慢地学习R的高级编程方面,并且正在将我自己的软件包转换成一个使用S3方法的软件包,以获得更清晰的函数输出。在这种情况下,我希望让我的方法运行现有的方法,因为我只是做一些小的添加

为简单性和再现性,请参见以下代码:

library(dynlm)
mod <- dynlm(interest ~ loggnp, M1Germany)
class(mod) <- c("newclass","dynlm","lm")

summary.newclass <- function(x, ...){
  cat(" some new stuff here")
  "if"(TRUE, cat("\n\tmaybe more here\n"), cat("\n\t oo fancy new stuff\n"))
  print(summary.lm(x)) # Works with lm
  #print(summary.dynlm(x)) # What I want to run instead
}
summary(mod)

提前感谢您的帮助。

与其直接调用
summary.dynlm
,我认为正确的方法是发送到
NextMethod()

您的代码变为

library(dynlm)
mod <- dynlm(interest ~ loggnp, M1Germany)
class(mod) <- c("newclass","dynlm","lm")

summary.newclass <- function(x, ...){
  cat(" some new stuff here")
  print(NextMethod())
}

summary(mod)
库(dynlm)

谢谢你的回复。这绝对有效。我注意到在源代码中创建了~summary.newclass。对于摘要输出是否建议这样做?不确定这是否是您所要求的,但如果您在自己的包中使用此功能,我将计划将summary.newclass函数导出到包命名空间,并为您的方法提供roxygen文档,就像您为任何其他导出函数提供的一样。因此,我一直在使用GitHub并直接在网站上编辑,而不是roxygen(我尝试过一次,但没有结果)。您建议我为我使用的每种方法创建新的.R和.Rd文件?只要您知道每种方法的位置,如何选择存储库的R文件夹结构(例如,每个文件一个函数/方法,按用途分组等)就无关紧要。我将开始克隆您的存储库并在本地工作,这样您就可以使用devtools::document()为您生成文档。哈德利的基本文档指南非常有用谢谢你我感谢你的帮助和信息~干杯
library(dynlm)
mod <- dynlm(interest ~ loggnp, M1Germany)
class(mod) <- c("newclass","dynlm","lm")

summary.newclass <- function(x, ...){
  cat(" some new stuff here")
  print(NextMethod())
}

summary(mod)