2017-02-12 2 views
0

Я пишу пакет R, который использует rjags в качестве зависимости. Моим экспортированным функциям необходимо позвонить по телефону rjags::jags.model("myModel.JAGS").Bundle. Файлы модели JAGS в пакете R

Я чувствую, что должен связать myModel.JAGS файл в папке exec, даже если это не -зепзи в строгом «сценарий». Как я должен получить к нему доступ?

Я нахожу

#'@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"), чтобы получить путь к файлу зазубрин.

Обратите внимание, что если вы используете devtools и загружать пакеты в режиме разработки, а не делать инсталляционный, то devtools будет загрузить несколько оберток для system.file смотреть в inst/whatever/ так ничего, что использует это будет работать для неустановленного пакета, загруженного с помощью load_all.

+0

Отлично. Это выглядит действительно лучше, приветствует :) –

+0

Любопытно, что, глядя сейчас только на лучшую практику использования 'stan' в пакетах R, рекомендация * есть *, чтобы поставить источник stan в' exec'. Но тогда stan-файлы превращаются в C и скомпилированы на разовой основе, поэтому, возможно, установленный пакет работает на тех .... – Spacedman

Смежные вопросы