![](/img/trans.png)
[英]Connecting: Oracle Autonomous DB and R - ROracle package issue
[英]Connecting to a DB when loading R package
我正在設置一個R包,其中包含一個.sqlite
數據庫和一些訪問數據庫的功能。 將程序包加載到RI后,將調用以下函數以連接到DB:
db.con <- function(){
# get the data subdirectory
db.wd <- system.file("data", package = "MyPKG")
# set up the connection
drv <- dbDriver("SQLite")
con <- dbConnect(drv,dbname = file.path(db.wd, "MyDB.db"))
return(con)
}
因此,每次加載程序包時,我都必須做:
con <- db.con()
如果我能避免每次都手動建立連接並自動連接到DB(在裝入程序包時),那就太好了。 我試圖將上面的代碼放入.onLoad
函數中,但是con
對象對於包的函數不可見...
F,干杯
我將創建一個環境變量來存儲您的設置。 這比使用全局環境更安全。
您可以在包中的某個位置定義它,例如:
.settings <- new.env() ## the "." to not be exported
然后在.attach
函數中,使用以下命令對其進行初始化:
## you can use .onLoad also ...
.onAttach <- function(libname, pkgname) {
.settings$con <- "connection"
}
然后,您可以在任何包函數中使用它,例如:
get_connection <- function() print(.settings$con)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.