Automatiser le fichier zip de la lecture dans la R

J'ai besoin d'automatiser R pour lire un fichier csv qui est dans un fichier zip.

Par exemple, j'type:

read.zip(file = "myfile.zip")

Et à l'intérieur, ce qui pourra être fait est:

  • Décompresser myfile.zip dans un dossier temporaire
  • Lire le seul fichier qu'il contient à l'aide de read.csv

Si il n'y a plus d'un fichier dans le fichier zip, une erreur est renvoyée.

Mon problème est d'obtenir le nom du fichier contenu dans le fichier zip, dans l'ordre numérique croissante à fournir, il ne le read.csv de commande. Quelqu'un sait-il comment faire?

Mise à JOUR

Voici la fonction que j'ai écrit basé sur @Paul réponse:

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)
}

Car je vais travailler avec plusieurs fichiers à l'intérieur de la tempdir(), j'ai créé un nouveau répertoire à l'intérieur, donc je ne peut pas se confondre avec les fichiers. J'espère que ça peut être utile!

  • possible les doublons? à: stackoverflow.com/questions/3053833/...; stackoverflow.com/questions/7044808/...
  • En fait le premier lien c'est pas liée, depuis que mon problème n'était pas de la décompression du fichier, mais pour obtenir le nom des fichiers dans le zip. Mais oui, la seconde montre les list.files de commande, qui était (à ce jour) inconnu par moi.
  • vous pouvez obtenir pour les noms de fichier dans le fichier zip en utilisant unzip(file, list=TRUE), comme je l'ai utilisé dans ma réponse.
InformationsquelleAutor João Daniel | 2012-01-24