J'ai un très gros fichier Zip et j'essaie de le lire en R sans le décompresser de la manière suivante:
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'
Si votre fichier Zip s'appelle Sales.Zip
et ne contient qu'un fichier appelé Sales.dat
, je pense que vous pouvez simplement procéder comme suit (en supposant que le fichier se trouve dans votre répertoire de travail):
data <- read.table(unz("Sales.Zip", "Sales.dat"), nrows=10, header=T, quote="\"", sep=",")
Inutile d'utiliser unz, car read.table peut gérer le fichier compressé directement:
data <- read.table("Sales.Zip", nrows=10, header=T, quote="\"", sep=",")
Voir ce post
Les méthodes du paquet readr
supportent également les fichiers compressés si le suffixe indique la nature du fichier, c'est-à-dire que les fichiers se terminant par .gz, .bz2, .xz ou .Zip seront automatiquement décompressés.
require(readr)
myData <- read_csv("foo.txt.gz")
Si vous avez installé zcat sur votre système (c'est le cas de linux, macos et cygwin), vous pouvez également utiliser:
zipfile<-"test.Zip"
myData <- read.delim(pipe(paste("zcat", zipfile)))
Cette solution présente également l’avantage qu’aucun fichier temporaire n’est créé.
La fonction gzfile ainsi que read_csv et read.table peuvent lire les fichiers compressés.
library(readr)
df = read_csv(gzfile("file.csv.gz"))
library(data.table)
df = read.table(gzfile("file.csv.gz"))
read_csv du paquet readr peut lire les fichiers compressés même sans utiliser la fonction gzfile.
library(readr)
df = read_csv("file.csv.gz")
read_csv est recommandé car il est plus rapide que read.table
Dans cette expression tu as perdu un point
temp <- tempfile("Sales", fileext=c("Zip"))
CA devrait etre:
temp <- tempfile("Sales", fileext=c(".Zip"))