在 R 包中捆绑 .JAGS 模型文件
Bundle .JAGS model files within an R package
我正在编写一个使用 rjags
作为依赖项的 R 包。我导出的函数需要在内部调用 rjags::jags.model("myModel.JAGS")
。
我觉得我应该将 myModel.JAGS
文件捆绑在 exec
文件夹中,即使它不是 stricto-sensu "script" .我应该如何访问它?
我找到了
#'@export
myFunction <- function () {
# ...
path <- path.package('myPackage')
file <- file.path(path, 'exec', 'myModel.JAGS')
rjags::jags.model(file, ...)
# ...
}
有点老套,是吗?
您应该使用 system.file
作为您的包名,并将文件放在 inst
文件夹中。
安装包时,inst
中的任何内容都会复制到包文件夹中,因此如果您有 mypackage/inst/jags/mymodel.jags
,那么您可以执行 system.file("jags","mymodel.jags",package="mypackage")
来获取 jags 文件的路径.
请注意,如果您使用 devtools
并在开发模式下加载您的包而不是进行安装,那么 devtools
将为 system.file
加载一些包装器以在 [=18 中查找=] 所以任何使用它的东西都适用于通过 load_all
.
加载的卸载包
我正在编写一个使用 rjags
作为依赖项的 R 包。我导出的函数需要在内部调用 rjags::jags.model("myModel.JAGS")
。
我觉得我应该将 myModel.JAGS
文件捆绑在 exec
文件夹中,即使它不是 stricto-sensu "script" .我应该如何访问它?
我找到了
#'@export
myFunction <- function () {
# ...
path <- path.package('myPackage')
file <- file.path(path, 'exec', 'myModel.JAGS')
rjags::jags.model(file, ...)
# ...
}
有点老套,是吗?
您应该使用 system.file
作为您的包名,并将文件放在 inst
文件夹中。
安装包时,inst
中的任何内容都会复制到包文件夹中,因此如果您有 mypackage/inst/jags/mymodel.jags
,那么您可以执行 system.file("jags","mymodel.jags",package="mypackage")
来获取 jags 文件的路径.
请注意,如果您使用 devtools
并在开发模式下加载您的包而不是进行安装,那么 devtools
将为 system.file
加载一些包装器以在 [=18 中查找=] 所以任何使用它的东西都适用于通过 load_all
.