用于对象和新数据类的“预测”调度的S4方法

时间:2012-03-26 14:23:40

标签: r methods s4

predict使用参数object...定义。我派生了一个类似PCA的模型,我称之为pcaadd,并编写了一个predict.pcaadd函数。到现在为止还挺好。现在,我想添加一个适用于object签名"pcaadd"的{​​S4}方法和newdata中的特定类型的对象(签名"hyperSpec")。

(如何)如果仅使用object...定义通用,我可以这样做吗?

这就是我现在所做的:检查newdata的类并进行适当的处​​理,但这似乎不是一个干净的解决方案:

predict.pcaadd <- function (object, newdata, ...){
  ## deal with class "hyperSpec"
  if (is (newdata, "hyperSpec")){
    validObject (newdata)

    ## extract the matrix that is used for the prediction
    newdata <- newdata [[]]
  }

  ## default part of prediction
  tmp <- predict (object$pca, newdata)
  tcrossprod (tmp [, - object$refcomps], object$pca$rotation [, -object$refcomps])
}

1 个答案:

答案 0 :(得分:1)

最后,我在as.matrix (object)函数中使用predict来处理不同类型newdata的正确调度(因为它可以为任何类型的{{1}定义}})。