2011-04-23 236 views
43

我以前使用?unzip來使用R獲取壓縮文件的內容。這段時間,我很難從.gz文件中提取文件,該文件可以從here中找到。使用R解壓縮gz文件

我試過?gzfile?gzcon,但一直沒有得到它的工作。任何幫助你可以提供將不勝感激。

回答

24

如果你真的想解壓縮文件,只需使用untar功能,不支持gzip的。 例如爲:

untar('chadwick-0.5.3.tar.gz') 
47

這裏是一個工作的例子,可以幫助說明什麼gzfile()gzcon()

R> foo <- data.frame(a=LETTERS[1:3], b=rnorm(3)) 
R> foo 
    a  b 
1 A 0.586882 
2 B 0.218608 
3 C 1.290776 
R> write.table(foo, file="/tmp/foo.csv") 
R> system("gzip /tmp/foo.csv")    # being very explicit 

現在,該文件被寫入,而不是隱式使用的file(),使用gzfile()

R> read.table(gzfile("/tmp/foo.csv.gz")) 
    a  b 
1 A 0.586882 
2 B 0.218608 
3 C 1.290776 
R> 

您指出的文件是一個壓縮的tar歸檔文件,據我所知,R本身沒有tar歸檔文件的接口。這些通常用於分發源代碼 - 例如R包和R源。

+3

是否有可能與'FREAD {data.table}'這樣做呢?我到目前爲止嘗試沒有成功 – 2016-04-25 22:38:31

+0

我不這麼認爲。檢查'fread'文檔。 – 2016-04-26 00:51:40

+3

'fread(paste0(「zcat <」,PATH_TO_FILE))' – 2016-06-10 15:55:21

17

http://blog.revolutionanalytics.com/2009/12/r-tip-save-time-and-space-by-compressing-data-files.html

ř加入透明減壓某些種壓縮文件中的最新版本(2.10)。如果您使用bzip2,xvz或gzip壓縮文件,則可以將它們讀入R,就像它們是純文本文件一樣。你應該有適當的文件擴展名。

命令

myData <- read.table('myFile.gz') 

#gzip壓縮文件有一個 「GZ」 擴展

將工作就像 'myFile.gz' 中的原始文本文件。

+0

除非指定colClasses參數,否則它可以工作。如果你添加 myData < - read.table('myFile.gz',colClasses = c(「character」,「integer」)) 然後你會得到一個錯誤(從R 3.2.0開始)。廢話。 – Met 2015-06-12 16:58:51

26

要取消GZ R中一個文件,你可以做

library(R.utils) 
gunzip("file.gz") 
+4

那就是我在找的東西。注意:'注意:默認的(remove = TRUE)行爲是在輸出文件被完全創建並關閉之後,輸入文件被刪除。「 - 見'?gunzip' – Rentrop 2016-12-27 10:33:50

+2

哇,這似乎是錯誤的。 – wordsforthewise 2017-03-01 22:51:58