2017-07-01 15 views
1

のR /ディレクトリに保存されている関数を使用するRスクリプトを整理するために私は次のパッケージ構造を有する:どのようにRパッケージ

mypackage/ 
|-- .Rbuildignore 
|-- .gitignore 
|-- DESCRIPTION 
|-- NAMESPACE 
|-- inst 
    |-- extdata 
    |-- mydata.csv 
|-- vignettes 
|-- R 
    |-- utils.R 
`-- mypackage.Rproj 

現在、私はR/ディレクトリ内のすべての機能を保存します。私の質問は です。どこにR /、そのスクリプトに保存されている関数を試すためにスクリプト(例:try_functions.R)を置くべきですか? inst/extdata/

また、RStudioを使用した開発プロセスでは、R/に機能を追加して固定した後で、このパッケージを更新して試してみるのはどうですか?

答えて

2

testthatはあなたが探しているパッケージです。 "試し"で、私はあなたが "テスト"を意味していると推測し、testthatパッケージに対して正式に行われる方法はパッケージのtests/testthatディレクトリ内にあります。

ハドリーの「Advanced R」の本は、ベストプラクティスについては、more informationであり、多くの良い例が見つかるはずです。

ドキュメントからいくつか抜粋:

テストは、パッケージ開発の重要な一部です。それは、あなたがしたいことをあなたの コードが確実にします。ただし、テストでは開発ワークフローに追加の ステップが追加されます。この章の目的は、 に、testthatパッケージを使用して自動化されたテスト を公式化することによって、このタスクをより簡単で効果的にする方法を示すことです。

と実装:

を実行し、testthatを使用するようにパッケージを設定するには:

devtools::use_testthat()

この意志:

  1. テスト/ testthatを作成します。ディレクトリ。

  2. DESCRIPTIONのSuggestsフィールドにtestthatを追加します。

  3. R CMD チェックが実行されたときにすべてのテストを実行するファイルtests/testthat.Rを作成します。 (あなたは、自動チェックでそれについての詳細を学びます。)

また、パッケージのディレクトリ内のさまざまな場所を参照するためrprojrootパッケージに見えるかもしれません。

+0

ご返信ありがとうございます。 'test'は、関数が機能するかどうかを調べることを意味します。 '試行 'とは、関数を完全に使用するテストとコードを含み、データを操作して、出力をどこかに格納します。プロットイメージなど。 'tests/tesstthat'にも格納する必要がありますか? – pdubois

+1

私はそう主張するだろう。テストの定義に「試したい」と思うものを含めることにします。あなたが言ったように: 'テスト'と関数を完全に使用する - 広告として動作することを確認します。'testthat'パッケージの素晴らしい点は、あなたの小切手を自動化するように設計されていることです。定期的に実行することができます(もちろん、手動で出力を検査することはもちろん可能です)。 – cole

+1

今すぐ警告します。あなたのパッケージに出力するかどうかによって出力が異なります。私。この出力は "試して"/"テスト"を意図していますか?または、あなたのパッケージのユーザーが使用したいと思うこの出力はありますか?後者の場合、 'vignette'を調べたり、パッケージのビルドやロード/アタッチ(' .onLoad'や '.onAttach')にあなたの実行を実装したいかもしれません。 'devtools'パッケージはどちらの場合でも大きな助けになるでしょう。 – cole