R阅读压缩数据文件而不解压缩

我有一个非常大的zip文件,我正试图读取到R而不解压缩它像这样:

temp <- tempfile("Sales", fileext=c("zip")) data <- read.table(unz(temp, "Sales.dat"), nrows=10, header=T, quote="\"", sep=",") Error in open.connection(file, "rt") : cannot open the connection In addition: Warning message: In open.connection(file, "rt") : cannot open zip file 'C:\Users\xxx\AppData\Local\Temp\RtmpyAM9jH\Sales13041760345azip' 

如果您的zip文件名为Sales.zip并且只包含名为Sales.zip的文件,我认为您可以简单地执行以下操作(假定该文件位于您的工作目录中):

 data <- read.table(unz("Sales.zip", "Sales.dat"), nrows=10, header=T, quote="\"", sep=",") 

不需要使用unz,因为现在read.table可以直接处理压缩文件:

 data <- read.table("Sales.zip", nrows=10, header=T, quote="\"", sep=",") 

看到这个职位

你使用什么版本的R? 这可能是值得尝试最新的稳定版本(从项目,而不是分布,可以落后)。

我已经看到这个错误发生在旧版本,但不是最新的,当在两个unz中使用unz运行相同的命令。

如果你的系统上安装了zcat(linux,macos和cygwin),你也可以使用:

 zipfile<-"test.zip" myData <- read.delim(pipe(paste("zcat", zipfile))) 

该解决scheme还具有不创build临时文件的优点。

如果文件后缀指示文件的性质,即以.gz,.bz2,.xz或.zip结尾的文件将被自动解压缩,则readr软件包的方法也支持压缩文件。

 require(readr) myData <- read_csv("foo.txt.gz")