在R中创建新的S3类方法

时间:2017-08-08 09:58:42

标签: r class methods package

我正在编写一个包,我想在其中创建一个新的泛型方法,称为" analyze",根据参数类做不同的事情。与print print.lmprint.aov

类似

在我的包的R文件夹中,我创建了两个文件," analyze.lm"和" analyze.aov"包含eponym函数。但是,如果我在analyze(fit)对象上运行lm,它什么也不做,因为R只识别analyze.lm而不识别根函数("仅分析")。

我已尝试添加" analyze.R"文件,包含setMethod()(但错误),setGeneric("analyze", function(x) attributes(x))(但没有解决问题)或analyze()函数打印" NULL"。但是,如果我在analyze(fit)对象上运行lm,则打印NULL而不是运行analyze.lm类方法。

我怎样才能创建一个类似于base print的泛型方法,它根据参数类的行为不同,而且我在不同的文件中进行了分割(analyze.lm.R,analyze.aov.R等)。 )。谢谢!

1 个答案:

答案 0 :(得分:2)

添加如下通用函数:

analyze <- function(object, ...){
    UseMethod("analyze")
}