2014-02-05 38 views
4

我在研究所/扩展数据有一个文件helper.RData文件,其中包含 变量和数据集必须由职能在我的包, 使用,但并不意味着被用户访问。R:如何lazyload从安装/扩展数据变量R中包

我在包的开始使用加载:

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

由于该文件是大这需要相当长的时间,这是最令人讨厌 开发过程中(我用相当多的战利品功能来自devtools包的load_all())。

我宁愿让它延迟加载,以便只在实际需要时加载文件。

我该怎么做?

回答

3

在能够延迟加载数据之前,您必须将变量保存在支持延迟加载的数据库中。

您可以使用功能tools:::makeLazyLoadDB和后来的功能lazyLoad来完成此操作。

创建延迟加载数据库。假设你有变量X和Y,则你必须创建一个包含它们的环境:

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

下一次创建数据库:

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

当然你可以改变DBNAME

你可以使用lazyLoad("DBNAME")在R中导入它。

+0

如果还有更好的方法,我想听听它! – lucacerone

+1

我发现了函数delayedAssign(),我认为在很多情况下makeLazyLoadDB可能是一个很好的选择。 – lucacerone