【问题标题】:How to use a loop (for) to download.file and write.csv using names from a list in R如何使用循环(for)使用 R 中列表中的名称来下载.file 和 write.csv
【发布时间】:2014-05-31 05:13:14
【问题描述】:

所以我必须为每个下载的文件编写.csv,其中包含来自网络的多个国家/地区的货币。我希望用他们的蜱虫来保存它。

原来如此,

codigos = list("JPY", "RUB","SGD","BRL","INR","THB","GBP","EUR","CHF")

for (i in 1:9){

url1 = 'http://www.exchangerates.org.uk/'
url2='-USD-exchange-rate-history-full.html'

codigos = list("JPY", "RUB","SGD","BRL","INR","THB","GBP","EUR","CHF")
codigo = codigos[i]

url <- paste(url1, codigo, url2, sep = "")



download.file(url, destfile='codigo.html')


dados <- readHTMLTable('codigo.html')

write.csv(dados, file="codigo.csv")


}

虽然它可以读取每个被循环更改的 url,但它不能下载它们,也不能单独保存 csv。在此过程中,我可以看到它们中的每一个都被“保存”在一个名为 codigo.html 的文件中,最后我得到了一个 codigo.html 和一个 codigo.csv 以及列表中最后一个国家/地区。

【问题讨论】:

  • 你是什么意思“它不能下载它们,也不能保存 csv”?你有错误吗?代码运行正常吗?如果你在循环之外运行,变量会得到你期望的值吗?
  • 代码运行良好,但它并没有按照我的需要为每个国家/地区提供每个文件,它为我提供了列表中最后一个国家/地区的文件,名称为 codigos.csv他们的蜱需要...
  • 您是在说codigo.csv 文件吗?您似乎从未更改文件名,因此您每次都在同一个文件上进行写入。这可能与它有关。

标签: r loops csv for-loop


【解决方案1】:

问题是您将所有内容保存到相同的文件名。每次通过循环都会完全覆盖之前的内容。

还请注意,readHTMLTable 将采用 URL。所以也许这样的事情是为了:

for (i in 1:9){

    url1 = 'http://www.exchangerates.org.uk/'
    url2='-USD-exchange-rate-history-full.html'

    cod = codigos[i]

    url <- paste(url1, cod, url2, sep = "")

    dados <- readHTMLTable(url)

    # Create a unique name for each file
    filename <- paste(cod, 'csv', sep='.')
    write.csv(dados, file=filename)
}

您最好使用列表来保存数据,而不是在磁盘上创建 csv 文件,这样您就可以操作列表:

url1 <- 'http://www.exchangerates.org.uk/'
url2 <- '-USD-exchange-rate-history-full.html'

l <- lapply(codigos
            , function(i) readHTMLTable(paste0(url1, i, url2))
            )
names(l) <- codigos

【讨论】:

  • @user3693474 如果有效,您应该考虑按下绿色复选标记以接受答案并关闭问题。
【解决方案2】:

a) 在你的循环中“url

url <- paste(url1, cod, url2, sep = "")
download.file(url, destfile='cod.html')

b) 在您的行 "write.csv(url, file=nome)" 中,nome 必须介于 "

write.csv(url, file= "nome")

【讨论】:

    猜你喜欢
    • 2017-05-13
    • 2023-03-08
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2021-08-12
    相关资源
    最近更新 更多