S4-метод для `предиката` диспетчеризации объектов и классов новых данных - PullRequest
1 голос
/ 26 марта 2012

predict определяется с аргументами object и .... Я вывел PCA-подобную модель, которую я назвал pcaadd, и написал функцию predict.pcaadd. Все идет нормально. Теперь я хотел бы добавить метод (S4), который работает для object с подписью "pcaadd" и объектом определенного типа в 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 Ответ

1 голос
/ 05 декабря 2012

В конце концов, я использовал as.matrix (object) в функции predict, которая обеспечивает правильную отправку для различных типов newdata (как это можно определить для любого типа newdata).

...