我正在处理大型数据集,经常在我的工作站和笔记本电脑之间切换。将工作区映像保存到.RData对于我来说是最自然和方便的方法,所以这是我想要在两台计算机之间同步的文件。
不幸的是,它往往相当大(几GB),所以高效的同步要么需要我用电缆连接我的笔记本电脑,要么用USB棒移动文件。当我在工作站旁边时,如果我忘记同步我的笔记本电脑,我需要花上几个小时来确保所有的东西都同步。
然而,最大的对象变化相对较少(尽管我经常使用它们)。我可以将它们保存到另一个文件中,然后在保存会话之前删除它们,并在还原会话后加载它们。这是可行的,但会非常烦人。而且,无论何时修改它们,我都必须记住保存它们。很快就会一片狼藉。
是否有更有效的方法来处理这么大的数据块?
例如,如果有一种替代.RData格式-- .RData是一个目录,并且该目录中的文件是要加载的对象,我的问题就会得到解决。
发布于 2014-03-18 16:44:07
您可以使用saveRDS
objs.names <- ls()
objs <- mget(objs.names)
invisible(
lapply(
seq_along(objs),
function(x) saveRDS(objs[[x]], paste0("mydatafolder/", objs.names[[x]], ".rds"))
) )这将将会话中的每个对象保存到"mydatafolder“文件夹中作为一个单独的文件(确保在手动之前创建该文件夹)。
不幸的是,这将修改所有对象的时间戳,您不能依赖rsync。您可以首先使用readRDS读取对象,查看哪些对象在identical中发生了更改,并且只对更改的对象运行上面的lapply,这样您就可以使用类似于rsync的东西了。
https://stackoverflow.com/questions/22484634
复制相似问题