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

时间:2016-08-31 10:11:46

标签: r for-loop web-scraping

我正在尝试使用R.

从网站下载PDF

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

e.g:

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。

我已经阅读了这篇文章:MSDN并且想知道这是否与函数本身有关或者我的循环有问题吗?

代码类似于帖子:for loop on R function所以我想知道为什么它不起作用以及是否有更好的方法来使用R下载多个文件。

1 个答案:

答案 0 :(得分:6)

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

切线,我建议养成在定义seq_along循环时使用1:length()代替for的习惯。

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

或按照@docendodiscimus的建议使用地图

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