@EZGraphs на записях Твиттера: "Много csvs онлайн заархивировано. Существует ли способ загрузить, разархивировать архив и загрузить данные в data.frame, использующий R? #Rstats"
Я также пытался сделать это сегодня, но закончил тем просто, что загрузил zip-файл вручную.
Я попробовал что-то как:
fileName <- "http://www.newcl.org/data/zipfiles/a1.zip"
con1 <- unz(fileName, filename="a1.dat", open = "r")
но я чувствую, как будто я далеко. Какие-либо мысли?
Zip-архивы на самом деле подробнее о «файловой системе» с метаданными содержимого и т. д. См. справку (распаковать)
для подробностей. Итак, чтобы сделать то, что вы набросали выше, вам нужно
tempfile ()
) download.file ()
, чтобы загрузить файл во временный файл. file unz ()
, чтобы извлечь целевой файл из temp. file unlink ()
, который в коде (спасибо за базовый пример, но это проще) выглядит как
temp <- tempfile()
download.file("http://www.newcl.org/data/zipfiles/a1.zip",temp)
data <- read.table(unz(temp, "a1.dat"))
unlink(temp)
сжатый ( .z
) или сжатый с помощью gzip. Файлы ( .gz
) или bzip2ed ( .bz2
) - это просто файл , который вы можете читать непосредственно через соединение. Поэтому попросите поставщика данных использовать это вместо этого :)
Для записи, я попытался перевести ответ Дирка в код :-P
temp <- tempfile()
download.file("http://www.newcl.org/data/zipfiles/a1.zip",temp)
con <- unz(temp, "a1.dat")
data <- matrix(scan(con),ncol=4,byrow=TRUE)
unlink(temp)