直接从环境中解压缩R对象

问题描述 投票:1回答:2

我有一个R对象(类:'raw')加载到环境中。它是二进制格式。我知道这个(压缩的)R对象包含一个文件(例如pdf或txt文件)。

我们将此对象称为:'zipped_r_object'。

我没有保存在计算机上的原始文件。该对象是从数据库连接中获取的。

这就是为什么我想直接从R环境中解压缩二进制/原始的'zipped_r_object'并将解压缩的内容保存在一个新对象('unzipped_object')中。这样,我可以进一步处理文件。

如何在R中执行此操作?我知道如何从计算机上保存的zip存档中解压缩。但是我似乎不能仅在R环境中做到这一点。

非常感谢!

r binary unzip
2个回答
0
投票

我曾经遇到过类似的问题。在提出API请求后,我得到了一个压缩的二进制文件,必须以以下方式进行解析:

response.from.API.object
object.as.string.b64.binary = response.from.API.object$content
object.as.string.b64.dec = jsonlite::base64_dec(object.as.string.b64.binary)
base::writeBin(object.as.string.b64.dec, destination.fpath)

我认为您的zipped_r_object等同于我的object.as.string.b64.binary

就我而言,我必须将对象写入磁盘,然后从那里开始工作。


0
投票

一种方法是将对象writeBin输出到文件中。

writeBin(zipped_r_object, "temp.zip")

您也可以将其写到临时文件,然后解压缩到临时目录:

temp <- tempfile()
writeBin(zipped_r_object, temp)
temp2 <- tempdir()
unzip(temp, temp2)
list.files(temp2)
© www.soinside.com 2019 - 2024. All rights reserved.