从R中包含多个文件夹的压缩临时文件中读取csv文件

时间:2012-05-24 01:04:09

标签: r csv unzip

我正在尝试读取我从网络中提取的文件中包含的csv文件。问题是压缩文件有多个级联文件夹。我必须为几个不同的单位做到这一点,所以我正在执行一个循环。循环没有问题,文件名是正确的,我可以下载文件。但是我得到一条错误消息(我认为是因为R无法找到我要求它找到的确切文件)。错误是:

Error in open.connection(file, "rt") : cannot open the connection
In addition: Warning message:
In open.connection(file, "rt") :
  cannot locate file 'XXXX.csv' in zip file 'c:\yyy\temp\bla\'


download.file(paste("http://web.com_",units[i],"_",places[j],".zip",
                     sep=""),
                     temp,
                     cacheOK = F )
data <- read.csv2(unz(temp,
                   paste("name_",units[i],"_",places[j],".csv",
                   sep="")),
                   header=F,
                   skip=1)
unlink(temp)
fili<-rbind(X,
            data)

}

如何让R找到我想要的文件?

2 个答案:

答案 0 :(得分:1)

你有正确的方法,但(如警告所示)文件名错误。

在开始尝试阅读其内容之前,值得仔细检查zip文件是否存在。

if(file.exists(temp))
{
  read.csv2(unz(...))
} else
{
  stop("ZIP file has not been downloaded to the place you expected.")
}

浏览下载的文件(您可能希望先将其解压缩)以确保您正在寻找适合CSV内容的位置,这也是一个好主意。

答案 1 :(得分:0)

看起来你要阅读的文件位于目录中。在这种情况下,您的阅读应更改如下:

data <- read.csv2(unz(temp,
                   paste("**dirname**/name_",units[i],"_",places[j],".csv",
                   sep="")),
                   header=F,
                   skip=1)