54

ドキュメントでは、R は生データ ファイル (Rdata や Rda ではない) を次の場所に配置することを提案しています。inst/extdata/

最初の段落から: http://cran.r-project.org/doc/manuals/R-exts.html#Data-in-packages

data サブディレクトリは、データ ファイル用であり、遅延読み込みまたは data() を使用した読み込みで利用可能になります。(この選択は、DESCRIPTION ファイルの 'LazyData' フィールドによって行われます。デフォルトでは、そうではありません。) パッケージが必要とする他のデータ ファイルには使用しないでください。慣習は、ディレクトリ inst/ を使用するように成長しました。そのようなファイルの extdata。

したがって、すべての生データをこのフォルダーに移動しましたが、パッケージをビルドしてリロードし、関数でデータにアクセスしようとすると (たとえば):

read.csv(file=paste(path.package("my_package"),"/inst/extdata/my_raw_data.csv",sep="")) 
# .path.package is now path.package in R 3.0+

「ファイルを開けません」というエラーが表示されます。

ただし、ファイルが含まれるパッケージディレクトリに呼び出されるフォルダーがあるように見えます/extdata(ビルド後およびインストール後)。/instフォルダに何が起こっていますか?

/inst フォルダー内のすべてが/パッケージの にプッシュされますか?

4

2 に答える 2

75

file.pathを使用するよりも便利ですsystem.file。パッケージがインストールされたら、次のようにファイルを取得できます。

fpath <- system.file("extdata", "my_raw_data.csv", package="my_package")

fpathこれで、HD 上のファイルへの絶対パスが取得されます。

于 2012-11-19T22:49:21.900 に答える
40

あなたは両方とも非常に親密で、本質的にこれを持っていました。「Writing R Extensions」からの正式な参照は次のとおりです。

1.1.3 パッケージのサブディレクトリ

[...]

サブディレクトリの内容は、inst再帰的にインストール ディレクトリにコピーされます。のサブディレクトリは、 Rで 使用されるもの (現在、、、、、、、、、および、および以前のバージョンで使用されている、)と干渉instしないようにする必要があります。のコピー はビルド後に行われるため、インストールするファイルを作成できます。R 2.12.2 より前のバージョンでは、ファイルはパッケージ ソースのパーミッションで POSIX プラットフォームにインストールされていたため、これらの制限が厳しすぎないように注意する必要があります。適切な調整が行われます。ファイルをインストールから除外するには、ファイルで除外パターンのリストを指定できますRdatademoexeclibsmanhelphtmlMetalatexR-exinstsrcMakefileR CMD build.Rinstignore最上位のソース ディレクトリにあります。これらのパターンは、Perl のような正規表現 (regexp正確な詳細については R のヘルプを参照) で、1 行に 1 つずつ、ファイルおよびディレクトリ パスに対して照合 (10) する必要があります。たとえばdoc/.*[.]png$inst/doc(小文字) 拡張子。

于 2012-11-19T22:46:01.463 に答える