78

私は非常に大きな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'
4

7 に答える 7

56

zipファイルが呼び出さSales.zipれ、というファイルのみが含まれているSales.dat場合は、次のように簡単に実行できると思います(ファイルが作業ディレクトリにあると仮定します)。

data <- read.table(unz("Sales.zip", "Sales.dat"), nrows=10, header=T, quote="\"", sep=",")
于 2012-10-18T08:59:22.260 に答える
21

read.tableはzipファイルを直接処理できるため、unzを使用する必要はありません。

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

この投稿を見る

于 2016-03-16T21:11:15.187 に答える
17

パッケージのメソッドはreadr、ファイル拡張子がファイルの性質を示している場合、つまり.gz、.bz2、.xz、または.zipで終わるファイルが自動的に解凍される場合にも、圧縮ファイルをサポートします。

require(readr)
myData <- read_csv("foo.txt.gz")
于 2017-09-15T11:38:00.677 に答える
6

ファイルがsales.csvの場合、これは問題なく機能するはずです。

data <- readr::read_csv(unzip("Sales.zip", "Sales.csv"))

ファイルを抽出せずにファイル名を確認します。これは動作します

unzip("sales.zip", list = TRUE)
于 2020-05-24T12:53:26.090 に答える
2

システムにzcatがインストールされている場合(Linux、macos、およびcygwinの場合)、次を使用することもできます。

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

このソリューションには、一時ファイルが作成されないという利点もあります。

于 2017-09-15T11:32:34.747 に答える
2

この式では、ドットを失いました

temp <- tempfile("Sales", fileext=c("zip"))

そのはず:

temp <- tempfile("Sales", fileext=c(".zip"))
于 2018-08-09T00:03:04.417 に答える
1

gzfile関数は、read_csvおよびread.tableとともに、圧縮ファイルを読み取ることができます。

library(readr)
df = read_csv(gzfile("file.csv.gz"))

library(data.table)
df = read.table(gzfile("file.csv.gz"))

readrパッケージのread_csvは、gzfile関数を使用しなくても圧縮ファイルを読み取ることができます。

library(readr)  
df = read_csv("file.csv.gz")

read.tableよりも高速であるため、read_csvをお勧めします

于 2018-07-06T02:43:58.220 に答える