2017-02-12 104 views
0

我正在編寫一個R包,它使用rjags作爲依賴關係。我輸出的函數需要在內部調用rjags::jags.model("myModel.JAGS")R包中的.JAGS模型文件

我覺得我應該捆綁exec文件夾中myModel.JAGS文件,即使它不是一個嚴格-意義上「腳本」。我應該如何訪問它?

我發現

#'@export 
myFunction <- function() { 

    # ... 

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

    # ... 

} 

有點hackish的,是嗎?

回答

3

您應該使用system.file作爲包名稱,並將該文件放在inst文件夾中。

安裝軟件包時,將inst中的任何內容複製到軟件包文件夾中,因此如果您有mypackage/inst/jags/mymodel.jags,則可以使用system.file("jags","mymodel.jags",package="mypackage")來獲取jags文件的路徑。

請注意,如果您使用devtools和發展模式,而不是做一個安裝加載你的包,然後devtools會加載一些包裝爲system.fileinst/whatever/所以任何使用這會爲通過load_all加載卸載的包工作的樣子。

+0

太好了。這看起來更好,歡呼聲:) –

+0

奇怪的是,雖然剛剛看到R包中'stan'用法的最佳實踐,建議*是*將stan源放在'exec'中。但是,然後stan文件變成C並編譯一次性的基礎上,所以也許安裝的軟件包對那些.... – Spacedman