直接从环境中解压 R 对象
Unzip a R object straight from the environment
我有一个 R 对象 (class: 'raw') 加载到环境中。它是二进制格式。我知道这个(压缩的)R 对象包含一个文件(例如 pdf 或 txt 文件)。
我们称这个对象为:'zipped_r_object'。
我的电脑上没有保存原始文件。此对象是从数据库连接中获取的。
这就是为什么我想直接从 R 环境中解压缩 binary/raw 'zipped_r_object' 并将解压缩的内容保存在一个新对象 ('unzipped_object') 中。这样,我可以进一步处理文件。
我如何在 R 中执行此操作?我知道如何从保存在计算机上的已保存 zip 存档中解压缩。但我似乎不能只在 R 环境中这样做。
非常感谢!
我曾经遇到过类似的问题。在 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
在我的例子中,我必须将对象写入磁盘,然后从那里开始工作。
一种方法是 writeBin
将对象输出到文件中。
writeBin(zipped_r_object, "temp.zip")
您也可以将其写入临时文件,然后使用 unzip
和 list = TRUE
查看存档中包含的文件的名称。
temp <- tempfile()
writeBin(zipped_r_object, temp)
unzip(temp, list = TRUE)
然后你可以将它解压到一个临时目录:
temp2 <- tempdir()
unzip(temp, temp2)
list.files(temp2)
我有一个 R 对象 (class: 'raw') 加载到环境中。它是二进制格式。我知道这个(压缩的)R 对象包含一个文件(例如 pdf 或 txt 文件)。
我们称这个对象为:'zipped_r_object'。
我的电脑上没有保存原始文件。此对象是从数据库连接中获取的。
这就是为什么我想直接从 R 环境中解压缩 binary/raw 'zipped_r_object' 并将解压缩的内容保存在一个新对象 ('unzipped_object') 中。这样,我可以进一步处理文件。
我如何在 R 中执行此操作?我知道如何从保存在计算机上的已保存 zip 存档中解压缩。但我似乎不能只在 R 环境中这样做。
非常感谢!
我曾经遇到过类似的问题。在 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
在我的例子中,我必须将对象写入磁盘,然后从那里开始工作。
一种方法是 writeBin
将对象输出到文件中。
writeBin(zipped_r_object, "temp.zip")
您也可以将其写入临时文件,然后使用 unzip
和 list = TRUE
查看存档中包含的文件的名称。
temp <- tempfile()
writeBin(zipped_r_object, temp)
unzip(temp, list = TRUE)
然后你可以将它解压到一个临时目录:
temp2 <- tempdir()
unzip(temp, temp2)
list.files(temp2)