【问题标题】:Download multiple files using "download.file" function使用“download.file”功能下载多个文件
【发布时间】:2017-01-07 20:59:37
【问题描述】:

我正在尝试使用 R 从网站下载 PDF。

我有一个 PDF-URL 向量 (pdfurls) 和一个目标文件名向量 (destinations):

例如:

pdfurls <- c("http://website/name1.pdf", "http://website/name2.pdf")
destinations <- c("C:/username/name1.pdf", "C:/username/name2.pdf")

我使用的代码是:

for(i in 1:length(urls)){
    download.file(urls, destinations, mode="wb")}

但是,当我运行代码时,R 会访问 URL,下载第一个 PDF,然后一遍又一遍地重复下载相同的 PDF。

我读过这篇文章:for loop on R function,想知道这是否与函数本身有关,还是我的循环有问题?

代码与此处的帖子相似:How to download multiple files using loop in R? 所以我想知道为什么它不起作用以及是否有更好的方法来使用 R 下载多个文件。

【问题讨论】:

    标签: r for-loop web-scraping


    【解决方案1】:

    我认为您的循环大部分都很好,只是您忘记索引 urlsdestinations 对象。

    我建议养成在定义for 循环时使用seq_along 而不是1:length() 的习惯。

    for(i in seq_along(urls)){
        download.file(urls[i], destinations[i], mode="wb")
    }
    

    或者按照@docendodiscimus 的建议使用 Map

    Map(function(u, d) download.file(u, d, mode="wb"), urls, destinations)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-26
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多