2017-08-03 18 views
1

特定のURLからデータをダウンロードしましたが、ダウンロードしたファイルを解凍することができず、理由を理解できません。データをダウンロードするコードは次のとおりです。 、その上 R01.zip R02.zip ...と、私はファイルを解凍できませんR

unzip(R01.zip) 

やその他のファイルを解凍しようとするを使用する場合:

library(downloader) 
path <- getwd() 
for(i in 1:15){ 
fileName <- sprintf("%02d",i) 
if (!file.exists(paste0(fileName,".zip"))) { 
urlFile = paste0("http://www.censo2017.cl/wp-content/uploads/2016/12/R", 
fileName,".zip") 
download(urlFile, dest = paste0("./R",fileName, ".zip"), mode ="wb") 
} 
} 

は、それから私は、名前の15個のzipファイルを持っています次のエラーが発生しますWarning message: In unzip("R01.zip") : error 1 in extracting from zip file

this oneまたはthis oneなどの関連するStackOverflow投稿を読んでいますが、私の場合は解決策がありません。

ファイルを手動で解凍することはできますが、私はRStudio内で直接行いたいと思います。何か案は?

PD:.zipファイルを経由して、地理的データが含まれている、つまり、.DBF、.PRJ、.shpのファイルなど

ありがとう!

+2

「ダウンロード」機能はどこから来たのですか?基本R関数ではなく、追加のパッケージを指定していません。可能な限り作業コードをカットアンドペーストしてください。 – Spacedman

+0

あなたはそれらが有効なZIPファイルであると確信していますか? Rの外でそれらを抽出できますか? – MrFlick

+0

私のコードは、 "downloader"パッケージからのダウンロードです。しかし、思い出してくれてありがとう。 – csmontt

答えて

0

これを基にして、このを解決するには解決策がありました。

ファイルは実際には.zipファイルではなかったので、7-zipが手動でファイルの抽出をサポートして以来、私はR内で7-zipを呼び出す方法を探しました。

自分のコードを変更しました。ファイルは自動的にダウンロードされ、解凍されます。

# load neccesary packages 
library(downloader) 
library(installr) 
install.7zip(page_with_download_url = "http://www.7-zip.org/download.html") 

# download data and unzipped data 
path <- getwd() 
for(i in 1:15){ # the files correspond to administrative regions of Chile 
        # there are fifteen of them and they are ordered. 
fileName <- sprintf("%02d",i) # adding leading zeros to the index if 
           # the index number is of one digit 
if (!file.exists(paste0("R",fileName,".zip"))) { # download only 
               # if file is not already 
               # downloaded 
urlFile = paste0("http://www.censo2017.cl/wp-content/uploads/2016/12/R", 
      fileName,".zip") # specifying url address 
download(urlFile, dest = paste0("./R",fileName, ".zip"), mode ="wb") 
} # download file 
if (!file.exists(paste0("R",fileName))){ # if file is not already unzipped, 
             # unzip it 
z7path = shQuote('C:\\Program Files (x86)\\7-Zip\\7z') 
file = paste0(getwd(), "/", "R", fileName, ".zip") 
cmd = paste0(z7path, ' e ', file, ' -y -o', paste0(getwd(),"/R", fileName), 
     '/') 
shell(cmd) 
} 
} 

この解決策があなたにも役立つかどうか誰かが私に教えてくれると素晴らしいと思います!

4

彼らはファイルを圧縮していない、彼らはRARアーカイブです:

$ unrar v 01.zip 

UNRAR 5.00 beta 8 freeware  Copyright (c) 1993-2013 Alexander Roshal 

Archive: 01.zip 
Details: RAR 4 

Attributes  Size Packed Ratio Date Time Checksum Name 
----------- --------- -------- ----- -------- ----- -------- ---- 
    ..A....  1213  240 19% 23-11-16 16:12 C6C40C6D R01/Comuna.dbf 
    ..A....  151  138 91% 23-11-16 16:12 A3C83CE4 R01/Comuna.prj 
    ..A....  212  165 77% 23-11-16 16:12 01752C2A R01/Comuna.sbn 
    ..A....  132  101 76% 23-11-16 16:12 C4CA93A2 R01/Comuna.sbx 

RARアーカイブを抽出するためのR関数があるかどうかはわかりません。

おそらく.zipファイル拡張子は使用しないでください。代わりに.rarを使用してください。私はコマンドラインでunrarを使って上記を抽出しました。

関連する問題