16

R パッケージがキャッシュされたデータを格納できる定義済みの場所はありますか? データはセッション間で持続する必要があります。のサブディレクトリを作成することを考えていましたが${R_LIBS_USER}/package_name、これが移植可能かどうか、およびパッケージがシステム全体にインストールされている場合に「許可」されるかどうかはわかりません。

アイデアは次のとおりです:パッケージのサブディレクトリにR スクリプトmydata.Rを作成します。このスクリプトは、インターネットからデータをロードし、以前にキャッシュされていない場合はキャッシュします。(データがすでにキャッシュされている場合は、キャッシュが使用されます。) さらに、キャッシュを無効にしたり、新しいバージョンのデータがオンラインで利用できるかどうかを確認したりする機能が提供されます。datadata(mydata)data()

これは、次のドキュメントからのものですdata()

現在、次の 4 つの形式のデータ ファイルがサポートされています。

  1. '.R' または '.r' で終わるファイルは source() され、R 作業ディレクトリは一時的にそれぞれのファイルを含むディレクトリに変更されます。(data は、utils::data 経由で実行された場合に、utils パッケージがアタッチされていることを保証します。)

  2. ...

実際、パッケージのサブディレクトリに次の内容のファイルを作成しfortytwo.Rますdata

fortytwo = data.frame(answer=42)

を実行するとdata(fortytwo)、データ フレーム変数が作成されますfortytwo。問題はfortytwo.R、計算が困難な場合、データをどこにキャッシュするかということです。

編集: データを提供する「データ」パッケージと、それを操作する「コード」パッケージの 2 つのパッケージを作成することを考えています。質問は「データ」パッケージに関するものです。ユーザーごとのストレージのどこにファイルを保存して、R セッション間で永続化し、異なる R プロジェクトからアクセスできるようにすることができますか?

関連:インストール中にインターネットからデータをダウンロードするパッケージ.

4

2 に答える 2

1

R には、パッケージ固有の永続的なキャッシュの場所が絶対的に定義されているわけではありません。ただし、R.cache パッケージは、キャッシュされたデータを作成および管理するためのインターフェイスを提供します。シナリオに役立つようです。

ユーザーが R.cache ( library(R.cache)) をロードすると、次のプロンプトが表示されます。

The R.cache package needs to create a directory that will hold cache files.
It is convenient to use one in the user's home directory, because it remains
also after restarting R. Do you wish to create the '~/.Rcache/' directory? If
not, a temporary directory (/tmp/RtmpqdUcbP/.Rcache) that is specific to this
R session will be used. [Y/n]:

次に、おそらく永続的なホーム ディレクトリにキャッシュ ディレクトリを作成するか、セッション固有のディレクトリを作成するかを選択できます。データ パッケージを R.cache に依存させる場合、.onLoad()フック関数でキャッシュされたオブジェクトの存在を確認し、存在しない場合はデータをダウンロードできます。または、自分の質問で提案されている方法でこれを行うこともできます。

于 2014-08-21T14:01:08.897 に答える