我有一个列表,Z
其中每个Z[[i]]
都是一个ffdf
对象。
我的问题是如何Z
为将来的会话保存到磁盘,也许使用类似save.ffdf
.
Z <- list()
for(i in 1:10) {
Z[[i]] <- as.ffdf(data.frame(array(1,dim=c(2,10))))
}
is(Z[[1]])
is(Z)
我有一个列表,Z
其中每个Z[[i]]
都是一个ffdf
对象。
我的问题是如何Z
为将来的会话保存到磁盘,也许使用类似save.ffdf
.
Z <- list()
for(i in 1:10) {
Z[[i]] <- as.ffdf(data.frame(array(1,dim=c(2,10))))
}
is(Z[[1]])
is(Z)
您可以使用ffsave()
来保存对象列表,但它需要一个可以在当前环境中解析的名称列表。但是,您可以编写自己的辅助函数将列表中的每个对象 (df) 放入 aa 变量中,然后使用 ffsave 保存这些对象。像这样的东西:
saveList <- function(lst, fname) {
outlist = c()
for (i in 1:length(lst)) {
name = paste0('out_',i)
outlist = c(outlist, name)
assign(name, lst[[i]])
}
ffsave(list=outlist, file=fname)
}
当您加载此文件时,ffload()
您将在当前环境中获得一堆对象名称 out_1、out_2、...。你可能不想要这个,所以你需要另一个辅助函数来把东西放回列表中:
loadList <- function(fname) {
ffload(fname)
objs = ls(pattern="out")
outlist = list()
for (o in objs) {
idx= as.integer( strsplit(o,"_")[[1]][2] )
outlist[[idx]] = get(o)
}
outlist
}
注意:如果您想使用名称而不是数字索引值,则必须修改/扩展源代码。