【发布时间】:2016-02-03 23:27:36
【问题描述】:
我想仅在需要数据时才使用延迟分配从一组文件中加载一系列数据。但是由于这些文件将始终位于同一目录中(可能会被移动),而不是硬编码每个文件的位置(如果目录被移动,以后更改会很乏味),我想简单地制作一个接受目录文件路径的函数。
loadLayers <- function(filepath) {
delayedAssign("dataset1", readRDS(file.path(filepath, "experiment1.rds")))
delayedAssign("dataset2", readRDS(file.path(filepath, "experiment2.rds")))
delayedAssign("dataset3", readRDS(file.path(filepath,"experiment3.rds")))
return (list <- (setOne = dataset1, setTwo = dataset2, setThree = dataset3)
}
因此,我不想在开始时加载所有数据集,而是希望仅在需要时加载每个数据集(这会加速闪亮的应用程序)。
但是,我在函数中执行此操作时遇到了麻烦。当delayedAssign 不在函数中时它可以工作,但是当我将它们放入函数时,列表中的所有对象都简单地返回null,并且在需要时评估它们的“承诺”似乎没有实现。
实现这一目标的正确方法是什么? 谢谢。
【问题讨论】:
-
把数据放到一个包里,让它lazyLoad?
-
不需要把它做成一个包——你可以直接懒加载它stackoverflow.com/questions/8700619/…