「Writing R Extensions」を読んで、リードに従ってください。.onAttach()
または.onLoad()
です。私はそこにほとんど何もしないパッケージをたくさん持っています - そして、C++へのこの呼び出しは(Rcpp経由でもなくても)どこに初期化するかについて単に質問しているので重要ではありません。
例:Rblpapi creates a connection and stores it
.pkgenv <- new.env(parent=emptyenv())
.onAttach <- function(libname, pkgname) {
if (getOption("blpAutoConnect", FALSE)) {
con <- blpConnect()
if (getOption("blpVerbose", FALSE)) {
packageStartupMessage(paste0("Created and stored default connection object ",
"for Rblpapi version ",
packageDescription("Rblpapi")$Version, "."))
}
} else {
con <- NULL
}
assign("con", con, envir=.pkgenv)
}
私は、独自のデータベースに同じように(C++のコードを使用して)ハンドルを設定し、いくつかの(公開しない)コードを持っていました。鍵は、これらのフックは、あなたがここで欲しいものであることを保証する実行時のパッケージのロード/アタッチを保証することです。
ありがとうございました。私は "R Extensionsの作成"で "セットアップ"を探していましたが、何も表示されませんでした。 – user2476581
あなたの話が聞こえます。これらはあまりにも散在していますが、それはr-package-develメーリングリストを作成した理由の一部です。このような話題はそこで議論され、それは良い信号/ノイズ比を持っています。あまりにも時間で動作します:) –