Ho bisogno di automatizzare R per leggere un file di dati csv che è in un file zip.Automatizza lettura file zip in R
Ad esempio, vorrei digito:
read.zip(file = "myfile.zip")
che internamente, quello che sarebbe stato fatto è:
- Unzip
myfile.zip
in una cartella temporanea - Leggi l'unico file in esso contenuti usando
read.csv
Se ce n'è più di uno file nel file zip, viene generato un errore.
Il mio problema è ottenere il nome del file contenuto nel file zip, in modo da fornirgli il comando read.csv
. Qualcuno sa come farlo?
UPDATE
Ecco la funzione che ho scritto basandomi su @ Paolo risposta:
read.zip <- function(zipfile, row.names=NULL, dec=".") {
# Create a name for the dir where we'll unzip
zipdir <- tempfile()
# Create the dir using that name
dir.create(zipdir)
# Unzip the file into the dir
unzip(zipfile, exdir=zipdir)
# Get the files into the dir
files <- list.files(zipdir)
# Throw an error if there's more than one
if(length(files)>1) stop("More than one data file inside zip")
# Get the full name of the file
file <- paste(zipdir, files[1], sep="/")
# Read the file
read.csv(file, row.names, dec)
}
Dal Lavorerò con più file all'interno del tempdir()
, ho creato una nuova directory al suo interno, quindi non mi confondo con i file. Spero possa essere utile!
possibili duplicati? all'indirizzo: http://stackoverflow.com/questions/3053833/using-r-to-download-zipped-data-file-extract-and-import-data; http://stackoverflow.com/questions/7044808/using-r-to-download-gzipped-data-file-extract-and-import-data/7045059#7045059 – aatrujillob
In realtà il primo collegamento non è correlato, poiché il mio problema non era 'decomprimere il file, ma per ottenere il nome dei file all'interno dello zip. Ma sì, il secondo mostra il comando 'list.files', che era (finora) sconosciuto da me. –
@jdanielnd: puoi ottenere i nomi dei file nel file zip usando 'unzip (file, list = TRUE)', come ho usato nella mia risposta. –