只需阅读'写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)
}
Run Code Online (Sandbox Code Playgroud)
我有一些(非公开的)代码,以相同的方式设置一个句柄(使用C++代码)到专有数据库.关键是这些钩子保证你在包加载/附加上执行,这是你想要的.