Dear R-Devels,
I am writing right now my own package that makes use of 'tempfile' and
there within with 'path.package'. When I install it, I get the error:
Error in path.package("mypackage") : none of the packages are loaded.
Here is the code, I use in my package:
".defaultDBPath" <- function()
{
db.path <- tempfile(pattern = "mmstructDB",
tmpdir =
file.path(path.package("mmstruct"),
"data",
"databases"),
fileext = ".db")
return(db.path)
}
.mmstructBASE <- setClass("mmstructBASE",
representation("VIRTUAL",
dbName =
"character",
dbTable =
"character"),
prototype(dbName = character(),
dbTable =
character()
)
)
.mmstructDB <- setClass("mmstructDB",
representation("VIRTUAL",
conn = "SQLiteConnection"),
contains = c("mmstructBASE"),
prototype(conn =
dbConnect(dbDriver("SQLite"), .defaultDBPath()))
)
I understand the error, but I would like to have a workaround. How can I give
the path to the package I am actually installing without getting this error?
Best
Simon
On Sep 9, 2013, at 4:22 AM, Simon Zehnder wrote:> Dear R-Devels, > > I am writing right now my own package that makes use of 'tempfile' and there within with 'path.package'. When I install it, I get the error: Error in path.package("mypackage") : none of the packages are loaded. Here is the code, I use in my package: > > > ".defaultDBPath" <- function() > { > db.path <- tempfile(pattern = "mmstructDB", > tmpdir = file.path(path.package("mmstruct"), > "data", "databases"), > fileext = ".db") > return(db.path) > } > > .mmstructBASE <- setClass("mmstructBASE", > representation("VIRTUAL", > dbName = "character", > dbTable = "character"), > prototype(dbName = character(), > dbTable = character() > ) > ) > > .mmstructDB <- setClass("mmstructDB", > representation("VIRTUAL", > conn = "SQLiteConnection"), > contains = c("mmstructBASE"), > prototype(conn = dbConnect(dbDriver("SQLite"), .defaultDBPath())) > ) > > I understand the error, but I would like to have a workaround. How can I give the path to the package I am actually installing without getting this error? >That path to your package is dynamic - in general it will not be know when creating the lazy-load DB, so you really want to put that code in .onLoad() where the path is known. Cheers, Simon> > Best > > Simon > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > >