在R中如何为多个类复用同一类函数?
多类复用print函数的简便方法(R语言)
针对你的需求,有几种不用重复编写完整函数的简便方案:
1. 直接复用函数绑定到新类
不用重新写函数体,直接把已有的model.print赋值给model_2.print即可:
model_2.print <- model.print
这样model_2类的对象调用print时,就会执行和model类一样的逻辑。
2. 利用类继承关系
把model_2设置为model的子类,让它自动继承父类的print方法。在创建model_2类的对象时,将class属性指定为包含父类的向量:
# 示例:创建model_2对象时指定继承关系 my_model2 <- structure(list(beta = c(1,2,3)), class = c("model_2", "model"))
此时调用print(my_model2),会自动触发父类的model.print函数。
3. 若使用S4类系统:共享方法定义
如果你的类是基于S4系统创建的,可以先定义通用函数,再为两个类绑定同一个方法实现:
# 定义通用print函数 setGeneric("print", function(object) standardGeneric("print")) # 为model类实现方法 setMethod("print", signature = "model", function(object) { print(object@beta) }) # 直接复用该方法给model_2类 setMethod("print", signature = "model_2", definition = getMethod("print", "model"))
内容的提问来源于stack exchange,提问作者user19904
相关产品推荐
相关产品推荐

