2011-04-23 231 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