37

了解しました。最初にRパッケージを作成しようとしましたが、行き詰まりました。パッケージの作成方法は次のとおりです。

package.skeleton("pkg",code_files=some.filenames)
roxygenize("okg")

私はroxygen2を使用しており、「pkg-package.R」ファイルに次のインポートがあります。

@import data.table zoo lubridate

次に、ターミナルから次のコマンドを実行します。

R CMD build pkg
R CMD check pkg
R CMD install pkg

チェックフェーズ中に、次の警告が表示されます。

**遅延読み込み用のパッケージの準備
警告:読み込み時に以前のインポート'hour'を置き換えます'lubridate' <br>警告:読み込み時に以前のインポート'mday'を置き換えます'lubridate' <br>警告:読み込み時に以前のインポート'month'を置き換えますlubridate'<br>警告:'lubridate'をロードするときに前のインポート'wday'を置き換えます<br>警告:'lubridate'をロードするときに前のインポート'week'を
置き換えます警告:'lubridate'をロードするときに前のインポート'yday'を置き換えます<br>警告:「lubridate」をロードするときに以前のインポート「year」を置き換えます。<br> ** help
*ヘルプインデックスのインストール
**パッケージインデックスの構築...
**インストールされたパッケージをロードできるかどうかのテスト
警告メッセージ:
1:「lubridate」をロードするときに前のインポート「hour」を置き換える<br> 2:「lubridate」をロードするときに前のインポート「mday」を置き換える<br> 3:「lubridate」をロードするときに前のインポート「month」を置き換える<br> 4: 'lubridate'をロードするときに前のインポート'wday'を置き換える<br>5:'lubridate'をロードするときに前のインポート'week'を置き換える<br>6:'lubridate'をロードするときに前のインポート'yday'を置き換える<br>7:前を置き換える'lubridate'をロードするときに'year'をインポートします

それらをどうすればいいのかよくわかりませんが、名前空間の内容を上書きすることによる典型的な警告のようです。いずれにせよ、パッケージをインストールすることはできますが、使用しようとすると次のようになります。

library(pkg)
POSIXt、Date、およびdifftimeの+および-メソッドのオーバーライド
警告メッセージ:
1:「lubridate」をロードするときに以前のインポート「hour」を置き換える<br> 2:「lubridate」をロードするときに以前のインポート「mday」を置き換える<br> 3:「lubridate」をロードするときに前のインポート「month」を置き換える<br> 4:「lubridate」をロードするときに前のインポート「wday」を置き換える<br> 5:「lubridate」をロードするときに前のインポート「week」を置き換える<br> 6: 'lubridate'をロードするときに前のインポート'yday'を置き換える<br>7:'lubridate'をロードするときに前のインポート'year'を置き換える<br>d <-my.function(arg1、arg2)
MATCH(x、x)のエラー:関数「MATCH」が見つかりませんでした

traceback()を使用して、merge.zoo()の呼び出し中にこれが生成されていることがわかりました。そこで、Rセッションと出来上がりの間に手動でzooをロードしようとしましたが、エラーメッセージなしで関数は正しく機能します。

「pkg-package.R」ファイルとNAMESPACEの両方で、インポートの順序を手動で変更してみました。ただし、他の場所で見つけたものに基づいて、DESCRIPTIONにインポートまたは依存を追加していません。ヘルプ?

4

2 に答える 2

38

警告は、data.table と lubridate の両方がシンボルhourなどを定義しているためです。とを参照data.table::hourしてくださいlubridate::hour。パッケージ全体ではなく、 lubridate / data.table から必要な関数だけをインポートすることで、これを回避できます。標準の NAMESPACE ファイルには次が含まれます

importFrom(lubridate, hour)

例えば。roxygen2 では、次のタグを使用します。

@importFrom lubridate hour

MATCH の問題はおそらく、R 拡張機能の記述 1.6.2 で説明されているように、 のディスパッチmergeが正しくないためです。ここでの解決策は、 のメンテナーに連絡することです(メンテナーは R に精通しているので、私が誤診したように感じます...)。S3method(merge, zoo)export(merge.zoo)zoopackageDescription('zoo')$Maintainer

于 2012-04-26T00:54:57.513 に答える
1

MATCH エラーの一時的な回避策として、パッケージのファイルのセクションのzoo下にパッケージを一覧表示することに成功しました。Depends:DESCRIPTION

于 2013-02-01T20:12:08.107 に答える