2015-02-09 115 views
0

我在R中有一個.zip文件,我通過一個httr get請求(涉及驗證頭文件,以及whatnot,所以我不能只使用download.file)來接收,但它都是一些內存中的二進制gook。處理R中的二進制文件

我想解壓縮特定的文件,但我不知道如何做到這一點,因爲解壓縮方法需要一個文件路徑,而不是文件數據。對於這個問題,我不知道如何寫入磁盤......我無法弄清楚如何用它做一件事。

即:

> content(a) 
[1] 50 4b 03 04 0a 00 00 0 ... 

HALP!

+0

'unzip'函數採用一個'files'選項。 – 2015-02-09 07:05:42

+0

所以你有zip文件作爲二進制文件讀入R內存?如果是這樣,Omegahat包Rcompression可能會工作,但它是a)舊的,並且b)在Windows中不起作用。在R中還有'memCompress()',但它似乎並不處理zip文件(儘管如此,bzip和gzip也可以)。 – 2015-02-09 10:05:58

+1

用'writeBin()'將結果保存到磁盤。或者直接用'httr :: write_disk()'保存 – hadley 2015-02-09 18:01:21

回答

0

如果您想從zip文件中讀取特定文件,請嘗試「unz」。

UNZ( 「路徑到壓縮文件」, 「文件以提取」, 「R」)

1
library(tidyverse) 
library(httr) 

tmp <- tempfile() 
GET("http://example.com/file.zip", write_disk(tmp)) 

df <- unzip(tmp) %>% read_csv()