をオーバーロードするときS4として使用S3クラスを文書化:私は次の文私のパッケージ.Rファイルを持っているようにRoxygen2:私は次のコンテキストを持つRベース機能(COR)
私が過負荷cor
基本機能を実行します。
#'export
setGeneric("cor")
は今、私は私のオブジェクトのための特定の機能(stranger
という名前のクラス)を作成したい - ここでは簡単のために、私はちょうど私のオブジェクトが.id
という名前の追加の列とdata.tableであることを検討してください。
#' Correlation for stranger objects
#' describeIn cor Correlation method for stranger objects.
setMethod("cor",signature(x="stranger"),function(x, method = c("pearson", "kendall", "spearman")){
selectMethod("cor","ANY")(x[,-'.id',with=FALSE],y=NULL, use="everything",method=method)
})
私はsetGeneric
をunderstant場合は、S4クラスに依存している - それゆえsignature
パラメータ。
しかし、私はS4クラスを使用しますが、単純な古いやり方で自分のstranger
オブジェクトを構築していない:
buildClass <- function(x,...){
#... prepare out object as data.table with .ìd column
class(out) <- c("stranger", class(out))
return(out)
}
は、私は私のオブジェクトのためのS4クラスを持っていません。 Dispactはまだ動作します:cor
をオブジェクトに呼び出すと、専用メソッドが正しく適用されます。
私の質問は、ROxygen2を正しく文書化することです。現在、私の機能をロードするときに、私は次のメッセージが発生します
Updating stranger documentation
Loading stranger
Creating a generic function for 'cor' from package 'stats' in package 'stranger'
in method for 'cor' with signature 'x="stranger"': no definition for class "stranger"
を私はすでに慎重ハドレーroxygen2上のビネットプラスのstackoverflowに関連思われるいくつかの質問を読んでいるが、彼らは私だけのに対し、いずれかの古典的S3機構や純粋S4に対処しますS4コンストラクターを持たず、setClass
とsetGeneric
はS4に依存します。
ありがとうございます。確かに。私はまた、ノートを削除する可能性を見つける:setOldClass(c( "stranger")) '私の見知らぬ人の生成関数の前に置く。賞金獲得のためにしばらくお待ちください。 –
@EricLecoutreこれは助けてくれてうれしい! – duckmayr