web-dev-qa-db-fra.com

Décompresser le fichier gz à l'aide de R

J'ai utilisé ?unzip dans le passé pour accéder au contenu d'un fichier compressé en utilisant R. Cette fois-ci, j'ai du mal à extraire les fichiers d'un fichier .gz qui peut être trouvé ici .

J'ai essayé ?gzfile et ?gzcon mais n'ont pas réussi à le faire fonctionner. Toute aide que vous pourrez apporter sera grandement appréciée.

55
Btibert3

Si vous voulez vraiment décompresser le fichier, utilisez simplement la fonction untar qui prend en charge gzip. Par exemple.:

untar('chadwick-0.5.3.tar.gz')
26
daroczig

Voici un exemple pratique qui peut aider à illustrer à quoi servent gzfile() et gzcon()

foo <- data.frame(a=LETTERS[1:3], b=rnorm(3))
foo
#  a        b
#1 A 0.586882
#2 B 0.218608
#3 C 1.290776
write.table(foo, file="/tmp/foo.csv")
system("gzip /tmp/foo.csv")             # being very explicit

Maintenant que le fichier est écrit, au lieu d'utiliser implicitement file(), utilisez gzfile():

read.table(gzfile("/tmp/foo.csv.gz"))   
#  a        b
#1 A 0.586882
#2 B 0.218608
#3 C 1.290776

Le fichier que vous pointez est une archive tar compressée, et pour autant que je sache, R lui-même n'a pas d'interface avec les archives tar. Ils sont couramment utilisés pour distribuer le code source - comme par exemple pour les packages R et les sources R.

59
Dirk Eddelbuettel

Pour décompresser un fichier dans R, vous pouvez faire

library(R.utils)
gunzip("file.gz", remove=FALSE)

ou

gunzip("file.gz")

Mais vous obtenez ensuite le comportement par défaut (remove = TRUE) dans lequel le fichier d'entrée est supprimé après que le fichier de sortie est entièrement créé et fermé.

32
Robert Hijmans

http://blog.revolutionanalytics.com/2009/12/r-tip-save-time-and-space-by-compressing-data-files.html

R a ajouté une décompression transparente pour certains types de fichiers compressés dans la dernière version (2.10). Si vos fichiers sont compressés avec bzip2, xvz ou gzip, ils peuvent être lus dans R comme s'il s'agissait de fichiers en texte brut. Vous devez avoir les extensions de nom de fichier appropriées.

La commande...

myData <- read.table('myFile.gz')  

Les fichiers compressés #gzip ont une extension "gz"

Fonctionne comme si "monFichier.gz" était le fichier texte brut.

19
WCC