2016-01-22 55 views
1

假设您有一个数据对象保存到rds。有没有一种方法可以附加(如c()rbindcbind)到保存的对象而不显式加载原始?假设该对象将具有相同的类型或具有相同的属性?追加到序列化对象

# psuedo-code 
a_list <- list(x = c(1,2,3,4,5,6),y = c(6,5,4,3,2,1)) 
saveRDS(a_list, "path/to/file.rds") 

# empty workspace 
a_new_lsit <- list(z = c(3,2,1,6,5,4)) 
appendRDS(a_new_list, "path/to/file.rds") 

澄清,a_list不会在工作区中。这就是这个问题的要点 - 我想附加到一个序列化的对象,而不显式加载它。

+2

有一些相关的信息[这里](https://cran.r-project.org/doc/manuals/r-release/R-ints.html#Serialization-Formats)。它看起来像R在序列化文件的前十位左右对某些数据(长度,对象类型,对象属性)进行编码,因此推测可能会追加另一个对象(“绑定”,“绑定”等)意味着改变原始文件中的那些“元”位。 – nrussell

+0

如果你在你的系统上有合适的工具,你可以尝试[玩](https://gist.github.com/nathan-russell/1e5ee66bd767f09088da),但即使在最简单的情况下(原子向量),追加对象正如你在你的问题中描述的那样,涉及的不仅仅是简单的附加文件,所以我猜测创建这样一个函数是不值得的。 – nrussell

+0

是的,我怀疑这是不可能的。 –

回答

0

由于对象的二进制格式,这是不可能的。

0
saveRDS(c(a_list,list(z = c(3,2,1,6,5,4))), "path/to/file.rds") 
+2

为了澄清,'a_list'不在工作区中。这就是这个问题的要点 - 我想附加到一个序列化的对象,而不显式加载它。 –