2017-02-12 9 views
0

Ich schreibe ein R-Paket, das rjags als Abhängigkeit verwendet. Meine exportierten Funktionen müssen intern rjags::jags.model("myModel.JAGS") aufrufen.Paket .JAGS-Modelldateien in einem R-Paket

Ich fühle mich wie ich myModel.JAGS Datei im Ordner exec bündeln soll, auch wenn es keine stricto-sensu „Script“ ist. Wie soll ich dann darauf zugreifen?

Ich finde

#'@export 
myFunction <- function() { 

    # ... 

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

    # ... 

} 

ein wenig hackish, oder?

Antwort

3

Sie sollten system.file mit Ihrem Paketnamen verwenden und die Datei in den Ordner inst legen.

Alles in inst auf den Paketordner kopiert wird, wenn das Paket installiert ist, also wenn Sie mypackage/inst/jags/mymodel.jags haben, dann können Sie system.file("jags","mymodel.jags",package="mypackage") tun den Pfad zu Ihrer jags Datei zu erhalten.

Beachten Sie, dass, wenn Sie devtools verwenden und Ihre Pakete im Entwicklungsmodus laden, statt eine installieren, dann devtools einige Wrapper für system.file laden wird in inst/whatever/ so etwas zu suchen, die diese über load_all geladen für eine nicht installierte Paket funktioniert verwendet.

+0

Großartig. Das sieht in der Tat besser aus, Prost :) –

+0

Kurioserweise, während man gerade jetzt nach Best Practice für 'stan' Gebrauch in R-Paketen sucht, ist die Empfehlung *, die Stan-Quelle in' exec' zu setzen. Aber dann werden Stan-Dateien in C umgewandelt und auf einer einmaligen Basis kompiliert, so dass das installierte Paket vielleicht auf diesen arbeitet .... – Spacedman

Verwandte Themen