Programing

R 압축을 풀지 않고 zip 데이터 파일 읽기

crosscheck 2020. 12. 25. 23:00
반응형

R 압축을 풀지 않고 zip 데이터 파일 읽기


나는 매우 큰 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.dat있는 경우 다음을 수행 할 수 있습니다 (파일이 작업 디렉토리에 있다고 가정).

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=",")

이 게시물 보기


readr파일 접미사가 파일의 특성을 나타내는 경우 패키지 의 메서드는 압축 파일도 지원합니다. 즉, .gz, .bz2, .xz 또는 .zip으로 끝나는 파일은 자동으로 압축 해제됩니다.

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

시스템에 zcat이 설치되어있는 경우 (linux, macos 및 cygwin의 경우) 다음을 사용할 수도 있습니다.

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

이 솔루션은 임시 파일이 생성되지 않는다는 장점도 있습니다.


read_csv 및 read.table과 함께 gzfile 함수는 압축 파일을 읽을 수 있습니다.

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_csv는 read.table보다 빠르기 때문에 권장됩니다.


이 표현에서 당신은 점을 잃었습니다

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

그것은해야한다:

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

참조 URL : https://stackoverflow.com/questions/12460938/r-reading-in-a-zip-data-file-without-unzipping-it

반응형