8

私は自分が書いたコードについて暗黙的ではなく明示的である傾向があります。したがって、独自のパッケージを作成した後、すぐに頭に浮かぶのは、コードの堅牢性と信頼性を確保するための最善の方法です。その一部は、私のパッケージが依存しているパッケージと関係があります。

実際の質問

その点で:パッケージの依存関係のどのバージョンが必要/望ましいかを明示的に述べることは可能ですか?

たとえば、ファイルへの実際のパスを指定する必要がない方法を探していzipます(もちろん簡単に可能です)が、パッケージ名のみinstall.packagesを指定する「標準の動作」を使用するだけです(おそらくいくつかの必要なバージョンのリファレンス)。

デューデリジェンス

必要なRバージョンを記述するために機能する同様のメカニズムを期待して、ファイルのセクションに関して私のオプションが何であるかを確認するために、R拡張機能の記述をチェックしました(例)。しかし、パッケージの依存関係に似たものは見つかりませんでした。DependsDESCRIPTIONR (>= 2.15.2)

'Depends'フィールドは、このパッケージが依存するパッケージ名のコンマ区切りのリストを提供します。パッケージ名の後には、オプションで括弧内のコメントを続けることができます。コメントには、比較演算子、空白、および有効なバージョン番号が含まれている必要があります。

パッケージが特定のバージョンのRに依存している場合は、特別なパッケージ名「R」を使用することもできます。たとえば、パッケージがRバージョン2.11.0以降でのみ機能する場合は、「R(> = 2.11.0)」をに含めます。 'Depends'フィールド。R-develまたはR-patchedに特定のSVNリビジョンを要求することもできます。たとえば、「R(> = 2.14.0)、R(> = r56550)」には、2011年7月下旬のR-develより後のバージョンが必要です(リリースを含む)。 2.14.0のバージョン)。ライブラリとRパッケージチェック機能の両方がこのフィールドを使用します。したがって、不適切な構文を使用したり、必要になる可能性のある他のソフトウェアに関するコメントに「Depends」フィールドを誤用したりするとエラーになります。その他の依存関係(Rシステムの外部)は、「SystemRequirements」フィールドにリストする必要があります。別のREADMEファイルで増幅される可能性があります。

R INSTALL機能は、使用されているRのバージョンが、インストールするパッケージに対して十分に新しいかどうかをチェックします。指定されたパッケージのリストは、ライブラリーの呼び出し時と準備時の両方で、現在のパッケージの前に(バージョン要件をチェックした後)添付されます。インストール中の遅延読み込み用。

それから私も見て、議論install.packagesのようなものを望んでいましたが、そうversionではないと思います。

免責事項

私の質問の目的は、CRANパッケージリポジトリを介してパッケージを配布およびインストールするというRの哲学とは対照的であり、特定のパッケージの新しいバージョンが以前のパッケージを「無効」にし、install.packages()常に利用可能な最新のパッケージを取得することを完全に認識しています。 。また、物事を過度に複雑にしないために、エンドユーザーからバージョンの特性を隠すことも非常に理にかなっています。

それでも、可能な限り堅牢なコードを書くという目標に関して、私見では、物事を非常に明確に述べることも理にかなっています。または、少なくともそうするオプションがあります。

4

1 に答える 1

9

を使用しますDepends。例えば:

Depends: R (>= 2.15.0), foo (== 1.17-12)

は、2.15.0 以上の R バージョンfooに等しいパッケージへの依存関係を配置します1.17-12

(少なくとも、あなたのパッケージがパッケージfooのバージョンでのみ動作することを明示的に述べたいと私が正しく理解していれば。)x.yy-zz

ただし、これがエンド ユーザーにとってどれほど役立つかはわかりません。規定した正確なバージョンを維持するためだけにパッケージを使用するために、パッケージの個別のライブラリを維持するように強制することになるでしょう。

于 2012-11-07T10:12:24.843 に答える