2016-01-22 53 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'不在工作區中。這就是這個問題的要點 - 我想附加到一個序列化的對象,而不顯式加載它。 –