web-dev-qa-db-ja.com

Rパッケージのinstおよびextdataフォルダー

ドキュメントでは、Rはinst/extdata/に生データファイル(RdataでもRdaでもない)を配置することを推奨しています

最初の段落から: 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フォルダー内のすべてがパッケージの/にプッシュされますか?

43

あなたは非常に親密で、基本的にはこれを持っていました。 「R拡張機能の記述」からの正式な参照は次のとおりです。

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

[...]

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

33

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

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

fpathには、HD上のファイルへの絶対パスが含まれます。

63
Steve Lianoglou