2017-02-12 15 views
0

私は依存関係としてrjagsを使用するRパッケージを作成しています。私のエクスポートされた関数はrjags::jags.model("myModel.JAGS")を内部的に呼び出す必要があります。Rパッケージ内の.JAGSモデルファイル

私はそれがstricto-sensuの「スクリプト」でない場合でも、execフォルダ内のmyModel.JAGSファイルをバンドルする必要がありますように私は感じます。どのように私はそれにアクセスする必要がありますか?

私は

#'@export 
myFunction <- function() { 

    # ... 

    path <- path.package('myPackage') 
    file <- file.path(path, 'exec', 'myModel.JAGS') 
    rjags::jags.model(file, ...) 

    # ... 

} 

は少しハック見つけ、それを何ですか?

答えて

3

パッケージ名にsystem.fileを使用して、ファイルをinstフォルダに配置する必要があります。

パッケージがインストールされたときにinstにあるものはすべてパッケージフォルダにコピーされるため、mypackage/inst/jags/mymodel.jagsがある場合は、system.file("jags","mymodel.jags",package="mypackage")を実行してjagsファイルへのパスを取得できます。

注意あなたが開発モードではなく、インストールやっdevtoolsを使用して、パッケージをロードする場合は、devtoolsので、これを使って何がload_all介してロードアンインストールパッケージのために動作しますinst/whatever/に見てsystem.fileためのいくつかのラッパーをロードすること。

+0

これは本当にうまく見えます:) –

+0

奇妙なことに、奇妙なことに、Rパッケージの 'stan'用のベストプラクティスを今見ているうちに、' exec'にstanソースを置くことをお勧めします*。しかし、スタンファイルはC言語に変換され、一回限りでコンパイルされます。 – Spacedman