13

を使用して内部使用のパッケージを作成していdevtoolsます。ファイル/接続からのデータにパッケージをロードしたいと思います(パッケージがビルドされた日付によって異なります)。データはかなり大きいので、パッケージの構築中にデータを解析してロードするための 1 回限りのコストが必要です。

現在、パッケージレベルの変数にデータを割り当てるdata.RファイルがありR/、値はパッケージのインストール中に割り当てられます(または少なくともそれが起こっているようです)。この理想的とは言えないセットアップは、ほとんどの場合機能します。パッケージのすべてのインスタンスが同じデータを持つようにするには、inst/すべてを一緒にパッケージ化するのではなく、データ ファイルをパッケージと共に配布する必要があります (現在、パッケージをビルドする前にヘルパー スクリプトによってコピーされています)。もっと良い方法があるはずです。

そのような:

  • パッケージのビルド中に .rda ファイルを生成します (ただし、パッケージのインストール中に同じコードを実行する必要はありません)。
    • Makefileでこれを行うことができますが、それはやり過ぎのようです
    • パッケージのビルド中にのみ実行され、インストール中には実行されない R コードを使用できますか?
  • R コードを実行するdata/
    • しかし、データは問題のパッケージ内のコードを使用して改変されています。私はそれを修正することができますCollate(私は思う)が、すべての.Rファイルの順序を維持する必要があります(しかし、複雑さが増すので、Makefileを使用したほうがよいでしょうか?)
  • 2 つのパッケージをビルドします。1 つは必要なすべてのコードを含み、もう 1 つはデータを含みます。
  • 私が考えもしなかった明らかで巧妙なこと。

tl;dr: 動的に変化するデータのスナップショットを、展開用に凍結された R パッケージに追加する方法にはどのようなものがありますか?

4

1 に答える 1

2

上記のコメントで@BenBolker が指摘しているように、データセットを別のパッケージに分割することは、コミュニティ (最も顕著なのはコア パッケージdatasets) で前例があり、追加の利点があります。

また、関数をデータから分離することで、最新の関数を使用して過去のバージョンのデータを操作しやすくなります。

私は現在、tools-to-mungeパッケージとパッケージを持っていthings-to-mungeます。ヘルパー スクリプトを使用して、パッケージの適切なインクリメント バージョンを指すように、両方のパッケージの をビルドして(または)tools-to-mungeをセットアップできます。新しいパッケージがビルドされたら、必要に応じてパッケージ内の関数を使用してパッケージをビルドできます。SuggestsDependsDESCRIPTIONtools-to-mungethings-to-mungetools-to-munge

于 2013-01-09T18:53:55.907 に答える