Question

I have a file helper.RData file in my inst/extdata that contains variables and datasets to be used by the functions in my package, but not meant to be accessed by the user.

I load it at the beginning of the package using:

load(system.file("extdata","helper.RData", package = "mypackage"))

As the file is big this takes quite a bit of time and it is especially annoying during development (I use quite a loot the function load_all() from the devtools package).

I would rather prefer to have it lazy loaded so that the file is loaded only when actually needed.

How can I do that?

Was it helpful?

Solution

Before being able to lazy-load your data you have to save your variables in a database that supports lazy load.

You can do this using the function tools:::makeLazyLoadDB and later the function lazyLoad.

To create the lazy load database. Say you have the variables X and Y, the you have to create an environment that contains them:

e=new.env(parent=emptyenv())
e$X = X
e$Y = Y

next you create the database:

tools:::makeLazyLoadDB(e,"DBNAME")

of course you can change DBNAME.

You can the import it in R using lazyLoad("DBNAME").

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top