2012-03-28 7 views
15

私のパッケージの1つにビネットを書いています。このビネットでパッケージビネットでインポートされていないパッケージを使用することはできますか?

、私はこのパッケージはNAMESPACEまたはDESCRIPTIONファイルのImportsセクションでインポートされていないれotehrパッケージと対話する方法を実証したいと思います。

だから、私は私のビネットにこれらの外部パッケージを使用するrequireコールを入れているが、私はR CMD checkにパッケージをしようとすると、当然のことながら、私は、次のNOTEを得た:

* checking for unstated dependencies in vignettes ... NOTE 
‘library’ or ‘require’ call not declared from: ‘RColorBrewer’ 

は周りの任意の方法はありますこれは、私はこれらの外部パッケージをインポートするか、またはeval=FALSEを使用してビネットを「偽造する」べきですか?

答えて

20

DESCRIPTIONファイルのSuggests:に入れてください。

より。 R extensions manualの6:

「依存」とは必ずしも必要ではない パッケージを示し、フィールドは同じ構文を使用しています「伺えます」。これには、例、テスト、またはビューネット(see sectionパッケージ[ vignettesパッケージ]、26ページ)で使用されているパッケージと機能の本体にロードされたパッケージが含まれます。 たとえば、パッケージfooの例が、パッケージ バーのデータセットを使用しているとします。 がすべてのexamples/tests/vignettesを実行しない限り、bar use fooを持つ必要はありません。barを持つと便利ですが、必要はありません。バージョン要件を指定することができ、R CMDチェックによって使用される になります。また

+0

ありがとうございました。私はちょうど 'Suggests'フィールドの背後にある機能を明らかに理解していませんでした。申し訳ありませんが、これはRTFMに関する質問です。 – Pierre

3

ビネットが正しくそのパッケージに依存している場合、ビネット自体で

% \VignetteDepends{...} 

の文があるはずです:Sweave, Part II: Package Vignettes, R News 3/2 (Oct. 2003), 21 - 24.

は、しかし、あなたのケースはおそらく少し異なります。

% \\VignetteDepends{pkgxy}を使用しないでif (require ("pkgxy"))を使用しています(説明には、Suggests: pkgxyが必要です)。どのようにどこで私はユーザーが推奨するすべてのpacakgesをインストールすることを強制したくありません。私はビネットの冒頭にボックスを置いて、それらのパッケージのうちのどれが利用可能かを報告し、ビネットが構築されたときにパッケージが利用できない場合、「pkgxyはこれを行うために必要です」というテキストをビネットに入れます。

"introduction" vignette of package hyperSpecは例です(実際にどのように動作するかを確認するには、the .Rnwだけでなく、some more definitionsも必要です)。

+0

ご清聴ありがとう! hyperSpecの "introduction"へのリンクがダウンしています。代わりに、おそらく最善のスタート[here](http://hyperspec.r-forge.r-project.org/)を参照してください。 – dardisco

+0

@dardisco:ありがとう - 私は壊れたリンクを修正しました。 – cbeleites

関連する問題