predict is defined with arguments object and .... I derived a PCA-like model which I call pcaadd and wrote a predict.pcaadd function. So far so good. Now I’d like to add an (S4) method that works for object with signature "pcaadd" and a particular kind of object in newdata (signature "hyperSpec").
(How) can I do this if the generic is defined with object and ... only?
Here’s what I do for the moment: check the class of newdata and do the appropriate processing, but it seems not quite a clean solution:
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])
}
In the end, I used
as.matrix (object)in thepredictfunction which takes care of proper dispatch for different types ofnewdata(as it can be defined for any type ofnewdata).