2013-03-05 356 views
4

我嘗試下載並使用R.提取zip文件每當我這樣做,我得到錯誤信息[R exdir不存在錯誤

錯誤的解壓(溫度,列表= TRUE):' exdir」不存在

我使用基於堆棧溢出問題Using R to download zipped data file, extract, and import data

舉一個簡單的例子代碼:

# Create a temporary file 
temp <- tempfile() 

# Download ZIP archive into temporary file 
download.file("http://cran.r-project.org/bin/windows/contrib/r-release/ggmap_2.2.zip",temp) 

# ZIP is downloaded successfully: 

# trying URL 'http://cran.r-project.org/bin/windows/contrib/r-release/ggmap_2.2.zip' 
# Content type 'application/zip' length 4533970 bytes (4.3 Mb) 
# opened URL 
# downloaded 4.3 Mb 

# Try to do something with the downloaded file 
unzip(temp,list=TRUE) 

# Error in unzip(temp, list = TRUE) : 'exdir' does not exist 

我試過到目前爲止:

  • 手動訪問臨時文件,並與7zip的解壓縮它:能做到這一點沒有問題,文件是存在的並且可以訪問。
  • 將臨時目錄更改爲c:\ temp。再次,文件被成功下載,我可以訪問它並使用7zip解壓縮,但是R在嘗試訪問它時會拋出exdir錯誤消息。

[R版本2.15.2

R-Studio版本0.97.306

編輯:代碼工作,如果我使用unz代替unzip,但我一直無法弄清楚爲什麼一個人工作,另一個不工作。從CRAN指導:

  • UNZ讀取頭(只)zip文件中單個文件...
  • 解壓縮從提取的文件或列出一個zip壓縮包
+0

您的代碼適用於我,沒有錯誤。 – 2013-03-05 14:33:37

+1

我剛剛編輯過這個問題,unz似乎對我很好,但不能解壓縮。 – Tumbledown 2013-03-05 14:36:55

+0

只是爲了確認,您是否有權限在您的臨時目錄中寫入,並且您有足夠的空間?如果同樣的東西適用於經典的R(不是來自Rstudio),也可以嘗試,有時候我也遇到過類似Eclipse/StatET的類似問題。 – 2013-03-05 14:43:48

回答

3

在Windows設置: 我有這個錯誤,當我有exdir指定爲路徑。對我來說,解決方案是刪除路徑名後面的/或\\。

下面是一個例子,但是沒有創建新的文件夾,如果它不存在

locFile <- pathOfMyZipFile 
outPath <- "Y:/Folders/MyFolder" 
# OR 
outPath <- "Y:\\Folders\\MyFolder" 

unzip(locFile, exdir=outPath) 
1

幾年晚,但我仍然得到嘗試使用unzip()時發生此錯誤。

exdir解壓文件(解壓縮-d相當於)的目錄:因爲man頁面的狀態,如果unzipexdir指定將創建這似乎是一個錯誤。 如果需要,它將被創建。

一種解決方法我一直使用的手動創建必要的目錄:

dir.create("directory") 
unzip("file-to-unzip.zip", exdir = "directory/") 

一個痛苦,但它似乎工作,至少對我來說。

0

我在Windows 7機器上使用R3.2.1。

我找到解決這一問題的方法需要幾個步驟,但它爲我工作:

  1. 創建包含URL的從你在哪裏下載文件,例如名稱的矢量

FILE_URL < - 「http://your.file.com/file_name.zip

  • 使用download.file指定你在哪裏下載文件(使用新創建的載體網址),接着是壓縮文件的文件名(這應該是url名稱的最後部分)。它將被保存在工作目錄*中,例如
  • download.file(FILE_URL, 「file_name.zip」)

    *如果你不知道你的工作目錄,你可以使用getwd()進行檢查。如果你想改變你的工作目錄,你可以使用setwd(「C:users/username/...」)將它設置爲你想要的。

    1. 使用「unzip」將文件解壓縮到您的工作目錄中,並使用exdir設置的名稱。

    解壓( 「file_name.zip」,exdir = 「FILE_NAME」)

  • 要檢查工作,則可以使用list.files,例如
  • list.files( 「FILE_NAME」)

    希望這有助於!

    0

    這可以表現的另一種方式,該文檔也沒有說清楚原因。 你的exdir不能以「/」結尾,它必須只是目標文件夾的名稱。

    例如,這與 'exdir' 失敗不存在:

    unzip(temp, overwrite = F, exdir = "data_raw/system-data/") 
    

    這工作得很好:

    unzip(temp, overwrite = F, exdir = "data_raw/system-data") 
    

    據推測當解壓看到 「/」,在結束它一直在尋找的exdir路徑;而省略「/」則表示解壓縮「您找到了,請在此解壓縮」。

    +0

    實際上並非如此。 – 2016-02-11 15:33:57

    +0

    在Windows上,我確實如此。 – Frank 2016-02-25 21:57:14

    +0

    我也可以重現這種行爲。 – Hugh 2016-09-08 05:21:05