由 Venables 和 Ripley 编写的《统计与计算》一书有一个示例,说明在通用群函数 Math 的“多项式”类的对象上定义方法函数。数学是一个组函数,包含一些组件函数,包括 abs、acos、acosh、...
下面是书中提到的为组泛型函数Math定义方法函数的代码(注意代码是针对S4类(新式R/S类)):
setMethod("Math", "polynomial",
function(x) {
switch(.Generic, ceiling = , floor = ,
trunc = polynomial(callGeneric(x@coef), rat = x@rat),
stop(paste(.Generic, "not allowed on polynomials"))
)}
)
我知道使用 setMethod() 我们正在为通用函数 Math 定义一个方法函数,当它在“多项式”类的对象上调用时。你能解释一下 switch 在这里做什么吗?我阅读了有关开关的 R 帮助,但仍然难以理解以下部分:
switch(.Generic, ceiling = , floor = ,
trunc = polynomial(callGeneric(x@coef), rat = x@rat),
stop(paste(.Generic, "not allowed on polynomials"))
)}
请注意,上面的多项式函数是一个构造函数,用于创建“多项式”类的对象。