我正在尝试使用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下载多个文件。
答案 0 :(得分:6)
我认为你的循环很好,除了你忘了索引urls
和destinations
对象。
切线,我建议养成在定义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)