R自动下载并读取许多excel文件

时间:2013-10-02 13:42:06

标签: r excel import xlconnect

我需要下载几百个excel文件并每天将它们导入到R中。每一个都应该是他们自己的数据框架。我有一个csv。包含所有地址的文件(地址保持静态)。

csv。文件看起来像这样:

http://www.www.somehomepage.com/chartserver/hometolotsoffiles%a
http://www.www.somehomepage.com/chartserver/hometolotsoffiles%b
http://www.www.somehomepage.com/chartserver/hometolotsoffiles%a0
http://www.www.somehomepage.com/chartserver/hometolotsoffiles%aa11
etc.....

我可以使用这样的单个文件来完成:

library(XLConnect)

my.url <- "http://www.somehomepage.com/chartserver/hometolotsoffiles%a"

loc.download <- "C:/R/lotsofdata/" # each files probably needs to have their own name here? 

download.file(my.url, loc.download, mode="wb")

df.import.x1 = readWorksheetFromFile("loc.download", sheet=2)) 

# This kind of import works on all the files, if you ran them individually

但我不知道如何下载每个文件,并将其单独放在一个文件夹中,然后将它们作为单独的数据框全部导入到R中。

1 个答案:

答案 0 :(得分:3)

很难回答你的问题,因为你没有提供可重复的例子,也不清楚你究竟想要什么。无论如何,下面的代码应该指向正确的方向。

  1. 您有一个要访问的网址列表:

    urls = c("http://www/chartserver/hometolotsoffiles%a",
                 "http://www/chartserver/hometolotsoffiles%b")
    
    在您的示例中,您从csv文件中加载

  2. 接下来,我们下载每个文件并将其放在一个单独的目录中(您在问题中提到了

    for(url in urls) {
      split_url = strsplit(url, "/")[[1]]
      ##Extract final part of URL
      dir = split_url[length(split_url)]
      ##Create a directory
      dir.create(dir)
      ##Download the file
      download.file(url, dir, mode="wb")
    }
    
  3. 然后我们遍历目录和文件,并将结果存储在列表中。

    ##Read in files
    l = list(); i = 1
    dirs = list.dirs("/data/", recursive=FALSE)
    for(dir in dirs){
      file = list.files(dir, full.names=TRUE)
      ##Do something?
      ##Perhaps store sheets as a list
      l[[i]] = readWorksheetFromFile(file, sheet=2)
      i = i + 1
    }
    
  4. 我们当然可以将第二步和第三步合并为一个循环。或者删除循环并使用sapply