setMethod用于R中的两个不同的对象签名

时间:2015-07-13 20:22:14

标签: r s4

如何使用一个setMethod作为功能部分使用以下两个行代码相同?喜欢签名(" Triangle | Square")。谢谢。

setMethod("sides", signature("Triangle"), function(object) 3)
setMethod("sides", signature("Square"), function(object) 3)

1 个答案:

答案 0 :(得分:4)

通常的方法是

.sides_body = function(object) 3
setMethod("sides", "Triangle", .sides_body)
setMethod("sides", "Square", .sides_body)

除非存在类关系,并且各个类的定义相同

setClass("Shape")
setClass("Triangle", contains="Shape")
setClass("Square", contains="Shape")
setClass("Circle", contains="Shape")
setMethod("sides", "Shape", function(boject) 3)
setMethod("sides", "Circle", function(object) Inf)