使用"download.file"功能下载多个文件

eyl*_*yap 3 for-loop r web-scraping

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

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

例如:

pdfurls <- c("http://website/name1.pdf", "http://website/name2.pdf")
destinations <- c("C:/username/name1.pdf", "C:/username/name2.pdf")
Run Code Online (Sandbox Code Playgroud)

我使用的代码是:

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

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

我已经读过这篇文章:for R on R函数,并想知道这是否与函数本身有关或者我的循环有问题吗?

代码类似于帖子:如何在R中使用循环下载多个文件?所以我想知道为什么它不工作,如果有更好的方法使用R下载多个文件

Ben*_*min 7

我认为你的循环大多很好,除了你忘了索引urlsdestinations对象.

切线,我建议养成使用seq_along而不是1:length()定义for循环的习惯.

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

或使用地图所建议@docendodiscimus:

Map(function(u, d) download.file(u, d, mode="wb"), urls, destinations)
Run Code Online (Sandbox Code Playgroud)