【发布时间】:2011-08-11 11:49:13
【问题描述】:
我过去曾使用?unzip 来获取使用 R 的压缩文件的内容。这一次,我很难从 .gz 文件中提取文件,该文件可以在 here 找到。
我尝试了?gzfile 和?gzcon,但无法让它工作。您能提供的任何帮助将不胜感激。
【问题讨论】:
我过去曾使用?unzip 来获取使用 R 的压缩文件的内容。这一次,我很难从 .gz 文件中提取文件,该文件可以在 here 找到。
我尝试了?gzfile 和?gzcon,但无法让它工作。您能提供的任何帮助将不胜感激。
【问题讨论】:
这是一个有效的示例,可以帮助说明 gzfile() 和 gzcon() 的用途
foo <- data.frame(a=LETTERS[1:3], b=rnorm(3))
foo
# a b
#1 A 0.586882
#2 B 0.218608
#3 C 1.290776
write.table(foo, file="/tmp/foo.csv")
system("gzip /tmp/foo.csv") # being very explicit
现在文件已经写好了,不要隐式使用file(),而是使用gzfile():
read.table(gzfile("/tmp/foo.csv.gz"))
# a b
#1 A 0.586882
#2 B 0.218608
#3 C 1.290776
您指向的文件是一个压缩的 tar 存档,据我所知,R 本身没有与 tar 存档的接口。这些通常用于分发源代码——例如用于 R 包和 R 源代码。
【讨论】:
fread{data.table} 做到这一点吗?到目前为止,我尝试过但没有成功
data.table 实际上原生支持csv.gz(不需要zcat)
要在 R 中取消 gz 文件,您可以这样做
library(R.utils)
gunzip("file.gz", remove=FALSE)
或
gunzip("file.gz")
但是您会得到默认 (remove=TRUE) 行为,其中输入文件在完全创建并关闭输出文件后被删除。
【讨论】:
NOTE: The default (remove=TRUE) behavior is that the input file is removed after that the output file is fully created and closed. - 见?gunzip
如果你真的想解压文件,只需使用支持gzip的untar函数。
例如:
untar('chadwick-0.5.3.tar.gz')
【讨论】:
http://blog.revolutionanalytics.com/2009/12/r-tip-save-time-and-space-by-compressing-data-files.html
R 在最新版本 (2.10) 中为某些类型的压缩文件添加了透明解压缩。如果您使用 bzip2、xvz 或 gzip 压缩文件,则可以将它们读入 R 中,就像它们是纯文本文件一样。您应该有正确的文件扩展名。
命令...
myData <- read.table('myFile.gz')
#gzip 压缩文件具有“gz”扩展名
就像“myFile.gz”是原始文本文件一样工作。
【讨论】:
library(vroom)
columns3 = c('A', 'B',...) ## define column names
Data1<- vroom(".../XXX.tsv",col_names = columns3)
与tsv.gz 配合得很好
【讨论】: