R:如何从R包中的inst / extdata延迟加载变量

时间:2014-02-05 16:51:24

标签: r lazy-loading devtools

我的inst / extdata中包含一个文件helper.RData文件 我的包中的函数使用的变量和数据集, 但并不意味着用户可以访问。

我使用以下方法将其加载到包的开头:

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

由于文件很大,这需要相当多的时间,而且特别烦人 在开发过程中(我使用了load_all()包中的函数devtools。)

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

我该怎么做?

1 个答案:

答案 0 :(得分:4)

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

您可以使用函数tools:::makeLazyLoadDB以及函数lazyLoad

执行此操作

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

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

接下来你创建数据库:

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

当然,您可以更改DBNAME

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