2012-03-26 18 views
1

predictは、引数object...で定義されています。私はpcaaddと呼ばれるPCAのようなモデルを導き、predict.pcaadd関数を書いた。ここまでは順調ですね。今度は"pcaadd"objectと("hyperSpec"の)newdataという特定の種類のオブジェクトで動作する(S4)メソッドを追加したいと思います。オブジェクトと新データクラスの `predict`ディスパッチングのS4メソッド

(generic)genericが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

、私はpredict機能でas.matrix (object)を使用しましたさまざまなタイプのnewdataの適切なディスパッチを処理します(これは、任意のタイプのnewdataに対して定義できるためです)。

関連する問題