エラーで困っています
found an S4 version of 'simulate' so it has not been imported correctly
S3 メソッドとして、simulate() メソッドの定義を含む R パッケージを作成しました。シミュレートのジェネリックは既に定義されているため、 simulate.myclass (私の場合は simulate.fitContinuous) を定義するだけです。
このパッケージは、シミュレートの S4 バージョンを含む別のパッケージにも依存しています。パッケージをロードすると、上記の S4 バージョン エラーが発生します。何がエラーを生成しているのかわかりません。
github からパッケージを取得するか、実行することによる再現可能な例
require(devtools)
install_github("pmc", "cboettig")
require(pmc)
このエラーを最初から再現するには: 最小限の DESCRIPTION ファイルで新しいパッケージを作成します。説明のインポートを含めます: 痛い。NAMESPACE を作成し、imports(ouch) と S3method(simulate, test) を追加します。R ディレクトリを作成し、簡単な R スクリプトを追加します (前述の名前空間を生成する roxygen のドキュメントを含めましたが、このエラーは devtools/roxygen がなくても作成される可能性があります)。
#' simulate
#'
#' a test for s3/s4 conflicts
#' @param object who cares?
#' @param nsim guess.
#' @param seed yup
#' @param ... other parameters we will just ignore
#' @return something
#' @method simulate test
#' @S3method simulate test
#' @import ouch
simulate.test <- function(object, nsim = 1, seed = NULL, ...){
message("This test worked")
}
パッケージをインストールすると (必要に応じて最初に devtools をドキュメント化してください)、エラーが発生します。
これまでの私の最善の解決策は、NAMESPACE から S3method 行を削除し、代わりに完全な関数の simulate.test をエクスポートすることです。これは警告なしでチェックとインストールに合格しますが、明らかに劣ったソリューションです。
別の解決策は、インポートと同様に依存関係を持ち、S3 メソッドを適切に文書化することです (上記のように)。その後、すべてが期待どおりに機能しますが、警告メッセージは残ります。