【问题标题】:Create new S3 class methods in R在 R 中创建新的 S3 类方法
【发布时间】:2018-01-15 20:12:02
【问题描述】:

我正在编写一个包,我想在其中创建一个新的通用方法,称为“分析”,它根据参数类做不同的事情。类似于print 具有print.lmprint.aov 等。

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

我尝试添加一个“analyze.R”文件,该文件包含setMethod()(但出现错误)、setGeneric("analyze", function(x) attributes(x))(但未解决问题)或打印“NULL”的analyze() 函数”。但是,如果我随后在 lm 对象上运行 analyze(fit),则打印 NULL 而不是运行 analyze.lm 类方法。

我如何创建一个类似于基本print 的通用方法,它根据参数类的行为不同,并且我维护拆分为不同的文件(analyze.lm.R、analyze.aov.R 等)。谢谢!

【问题讨论】:

    标签: r class methods package


    【解决方案1】:

    像这样添加一个通用函数:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 2011-08-24
      • 2023-03-07
      相关资源
      最近更新 更多