「R 拡張機能の作成」を読んで、リードに従って.onAttach()
ください.onLoad()
。私はそこに小さなことをするパッケージをたくさん持っています - そして、あなたは単に物事を初期化する場所について尋ねているだけなので、C++へのこの呼び出し(Rcpp経由かどうか)は問題ではありません。
例: Rblpapi は接続を作成して保存します
.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++ コードを使用して) 設定する (公開されていない) コードがいくつかありました。重要なのは、これらのフックが、ここで必要なパッケージのロード/アタッチでの実行を保証することです。