2013-03-05 353 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