加载R包时连接到DB

时间:2014-10-01 11:36:24

标签: r sqlite package

我正在设置一个包含.sqlite数据库和一些访问数据库的函数的R包。在R中加载包后,我调用以下函数连接到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

1 个答案:

答案 0 :(得分:2)

我会创建一个环境变量来存储您的设置。这比使用全球环境更安全。

在您的包中的某个位置,您可以定义它:

.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)