R读取zip数据文件而不解压缩

lai*_*onh 60 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'
Run Code Online (Sandbox Code Playgroud)

pla*_*pus 40

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

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

  • @AllenWang 是的,但必须使用函数 `unzip` 代替:`unzip("Sales.zip", list=TRUE)` (7认同)

小智 17

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

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

这篇文章


Hol*_*ndl 8

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

require(readr)
myData <- read_csv("foo.txt.gz")
Run Code Online (Sandbox Code Playgroud)

  • 我不知道!在这里,我首先使用“unzip”提取 zip 文件,然后使用“readr”。感谢您使我的代码更加高效并减少了执行时间! (2认同)

小智 5

如果文件是 sales.csv,这应该可以正常工作。

data <- readr::read_csv(unzip("Sales.zip", "Sales.csv"))
Run Code Online (Sandbox Code Playgroud)

在不提取文件的情况下检查文件名。这有效

unzip("sales.zip", list = TRUE)
Run Code Online (Sandbox Code Playgroud)