Распакуйте файл gz с помощью R - PullRequest
53 голосов
/ 23 апреля 2011

В прошлом я использовал ?unzip, чтобы получить содержимое zip-файла, используя R. На этот раз мне трудно извлечь файлы из файла .gz, который можно найти здесь .

Я пробовал ?gzfile и ?gzcon, но не смог заставить его работать. Будем весьма благодарны за любую помощь, которую вы можете оказать.

Ответы [ 4 ]

58 голосов
/ 23 апреля 2011

Вот рабочий пример, который может помочь проиллюстрировать, что gzfile() и 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

Теперь, когда файл записан, вместо неявного использования file(), используйте gzfile():

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

Указанный вами файл является сжатым tar-архивом, и, насколько я знаю, сам R не имеет интерфейса с tar-архивами.Они обычно используются для распространения исходного кода - как, например, для пакетов R и источников R.

31 голосов
/ 09 мая 2015

Для отмены gz файла в R вы можете сделать

library(R.utils)
gunzip("file.gz")
26 голосов
/ 24 апреля 2011

Если вы действительно хотите распаковать файл, просто используйте функцию untar, которая поддерживает gzip .Например:

untar('chadwick-0.5.3.tar.gz')
19 голосов
/ 24 сентября 2013

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

R добавлена ​​прозрачная распаковка для некоторых видов сжатых файлов в последней версии (2.10).Если ваши файлы сжаты с помощью bzip2, xvz или gzip, их можно прочитать в R, как если бы они были простыми текстовыми файлами.У вас должны быть правильные расширения имени файла.

Команда ...

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

# gzip сжатые файлы имеют расширение "gz"

Будет работать так же, как если бы 'myFile.gz 'были необработанным текстовым файлом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...