最小化rds对象

时间:2016-01-24 19:44:36

标签: r

我在base64编码的字符串中有R对象(保存为.rds文件):

encoded <- "H4sIAAAAAAAABoVQywrCMBBc8zi0ICiCPyHme7yVrU0hkEZIA/XofwvWTUwQc/Ewy2SyOzvJpQUABpwxYJwoP1DZEHYECQKaeD5nwnHqa+1LTgCCpfGPIB1Oes5eReSD8VVf42+LKr3bmOdBZV3XZ214tTgXQ5bFdsCAKmBv9Y8yenKsDPbKuKC9Q6tmbUevRxKPGa+MP2mlcYO+0/6YFOrLrksT6RkyI36nSInJsCx6A7sXoh15AQAA"

我需要在R中加载此对象。按照这个问题(&#34; Base64 encoding a .Rda file&#34;),我得到了以下代码:

library("base64enc")
conb64 <- file('obj.b64', 'w+b')
write(encoded, conb64);
close(conb64)

base64decode(file='obj.b64', output = 'obj.rds')
myobj <- readRDS('obj.rds')

这很好但我想最小化代码并理想地管理而不创建像myobj <- readRDS(base64decode(encoded))这样的磁盘文件。有没有办法删除至少一些操作?

对我来说,base64enc包中存在一个错误。可以通过简单的执行来复制base64decode(what='anything', output = 'any.name') - 给出错误:

  

base64decode出错(what =&#34; any&#34;,output =&#34; any.name&#34;):
  论证&#34;文件&#34;缺少,没有默认

显然是因为base64decode()使用file作为参数,但也调用file()函数。当我更改函数的源代码(将file替换为filename)时,一切正常,代码decoded <- base64decode(encoded, what = 'raw')提供了正确的二进制rds文件。虽然错误未得到纠正,但可以使用caTools包中相同名称的功能:decoded <- base64decode(z = encoded, what = 'raw')。但是,我无法将其提供给readRDS()函数:

library('caTools')
decoded <- base64decode(encoded, what = 'raw')
con1 <- rawConnection(object = dec, open = 'rb')
myobj <- readRDS(con1)
# Error in readRDS(con1) : unknown input format

0 个答案:

没有答案