R exdir不存在错误

时间:2013-03-05 14:20:21

标签: r unzip rstudio

我正在尝试使用R下载并解压缩zip文件。每当我这样做时,都会收到错误消息

  

解压缩时出错(temp,list = TRUE):'exdir'不存在

我正在使用基于Stack Overflow问题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存档

4 个答案:

答案 0 :(得分:7)

在Windows设置上: 当我将exdir指定为路径时,我遇到了这个错误。对我来说,解决方案是删除路径名中的尾部/或\\。

这是一个例子,它创建了新文件夹(如果它尚不存在)

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

unzip(locFile, exdir=outPath)

答案 1 :(得分:2)

迟了几年但我在尝试使用unzip()时仍然遇到此错误。它似乎是一个错误,因为unzip状态的手册页指定了exdir,它将被创建:

  

exdir将文件解压缩到的目录(相当于unzip -d)。   如有必要,它将被创建。

我一直在使用的解决方法是手动创建必要的目录:

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

痛苦,但它似乎有效,至少对我而言。

答案 2 :(得分:0)

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

我发现解决此问题的方法需要几个步骤,但它对我有用:

  1. 创建一个向量,其中包含下载文件的URL的名称,例如
  2.   

    file_url&lt; - &#34; http://your.file.com/file_name.zip&#34;

    1. 使用download.file指定从中下载文件的URL(使用新创建的向量),然后是压缩文件的文件名(应该是url名称的最后一部分)。它将保存在您的工作目录*中,例如
    2.   

      download.file(file_url,&#34; file_name.zip&#34;)

      *如果您不确定您的工作目录,可以使用getwd()进行检查。如果要更改工作目录,可以使用setwd(&#34; C:users / username /...")将其设置为您想要的。

      1. 使用&#34;解压缩&#34;将文件解压缩到您的工作目录中,使用exdir设置的名称,例如
      2.   

        解压缩(&#34; file_name.zip&#34;,exdir =&#34; file_name&#34;)

        1. 要检查您的工作,您可以使用list.files,例如
        2.   

          list.files(&#34; file_name&#34;)

          希望这有帮助!

答案 3 :(得分:0)

这可以表现出另一种方式,而且文档没有说明原因。 您的exdir不能以&#34; /&#34;结尾,它必须只是目标文件夹的名称。

例如,这与'exdir&#39;不存在:

paintComponent()

这很好用:

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

大概是解压缩时会看到&#34; /&#34;在exdir路径的尽头,它一直在寻找;而省略&#34; /&#34;告诉解压缩&#34;你已经找到了它,解压缩到这里&#34;。