【问题标题】:R: How to lazyload variables from inst/extdata in R packageR:如何从 R 包中的 inst/extdata 延迟加载变量
【发布时间】:2014-03-02 05:54:16
【问题描述】:

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

我在包的开头加载它:

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

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

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

我该怎么做?

【问题讨论】:

    标签: r lazy-loading devtools


    【解决方案1】:

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

    您可以使用函数tools:::makeLazyLoadDB 和后来的函数lazyLoad 来做到这一点。

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

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

    接下来创建数据库:

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

    当然你可以更改DBNAME

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

    【讨论】:

    • 如果有更好的方法,我想听听!
    • 我发现了delayedAssign() 函数,我认为在许多情况下它可能是makeLazyLoadDB 的一个很好的替代方案。
    猜你喜欢
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    相关资源
    最近更新 更多