2015-10-21 12 views
12

私はRパッケージをまとめています。ビネットにサンプルコードを示したいと思います。ここでは、サンプルのデータファイル(パッケージに含まれています)を使用して出力ファイルを生成します。Rパッケージのビネットに相対パスを使用した出力例の入力データの例?

Hadley Wickhamの投稿(http://r-pkgs.had.co.nz/data.html)のサンプルデータを使用して、出力を生成するために解析する必要があるため、サンプルデータを生データとして保持する必要があると考えています。

だから、私は私のパッケージ構造のサブディレクトリの入力ファイルとOutputFilesと

/Users/userName/myPackage/inst/extdata/ 

にディレクトリを作成しました。

そして、サンプルファイル(exampleData.csv)をInputFilesサブディレクトリ(/ Users/userName/myPackage/inst/extdata/InputFiles)の中に置きます。

マイビネットは次の場所にあります。私はこのビネットとその例のデータセットを開発するには二つの問題が午前

<<eval=FALSE>>= 
fileString = "/Users/userName/myPackage/inst/extdata/InputFiles/exampleData.csv" 
doFunction1(fileString) 
doFunction2(fileString) 
doFunction3(fileString, output ="Users/userName/myPackage/inst/extdata/OutputFiles") 
@ 

:それは、次の構文が含まれてい

/Users/userName/myPackage/vignettes/myPackage.Rnw 

1) extdataファイルの使用が適切かどうかは不明です。前述のHadley Wickhamの参考文献によれば、これは私のサンプルファイルを置くのに最適なディレクトリ名と場所のようでした。

2)絶対パスではなく、パスウェイを相対パスにする方法がわかりません。表示されているように、このサンプルコードは自動的には実行されません。代わりに、私はeval = FALSEのRのチャンクの下に置いて、ユーザが自分自身をテストするために単純にそこにリストされるようにします。サンプルコードを実行した後、出力ファイルが(/ Users/userName/myPackage/inst/extdata/OutputFiles)に実際に作成されたことを確認することもできます。この例に従うときに絶対パスを使用する必要がないようにするための最良の方法は何ですか?パッケージディレクトリmyPackageからの相対パスに従うことは可能ですか?

私のデータファイルは、.csv、.htm、および.textファイルで構成されています。過去には、パッケージを構築するとき、私は.rdaファイルとしてデータフレームを保存し、その後、使用者は、単に使用することができます

data(example.rda) 

をそのファイルを読むために。彼らは経路全体を書く必要はありませんでした。 .csv、.html、および.textファイルを読み込み、完全なパスウェイを使用することなく、それらを出力例の場所に出力するために使用できる同様の機能はありますか?入力ファイルを読み込んで出力ファイルに書き込むヘルプ機能を使用することは可能でしょうか?/manフォルダ内のさまざまな例のヘルプ機能が、サンプルの出力ファイルを出力例のフォルダに物理的に保存すると、CRANに矛盾が生じますか?

答えて

8

パッケージ内のファイルを参照するための標準的な方法は次のとおりです。あなたが絶対パスを心配する必要はありませんので、

# gives root package directory 
system.file(package="myPackage") 

# specific file 
system.file("extdata/InputFiles/exampleData.csv", package="myPackage") 

# best is to use cross-platform way to write a file path: 
system.file("extdata", "InputFiles", "exampleData.csv", package="myPackage") 

devtoolsで開発、instサブディレクトリが、無視されます。これは、ビネットで動作するはずです。ビネットは、開発環境にロードしたパッケージではなく、インストールされたバージョンのパッケージのみを使用することに注意してください(具体的には、devtools::load_all()はビネットを構築するコードを変更しません。install()最初)。

最後に、data()を使用するとちょっと古いです。 Hadleyらはレイジーデータの使用を推奨しているため、データはネームスペースに自動的に表示されます。 DESCRIPTIONで次を試してください。

LazyData: true 
LazyDataCompression: xz 
関連する問題