如何通过使用列表从url迭代更新字符串来使用r下载多个文件

如何通过使用列表从url迭代更新字符串来使用r下载多个文件,r,function,url,rstudio,downloadfile,R,Function,Url,Rstudio,Downloadfile,我想从中下载100多个文件。url中唯一更改的字符串是“AGO”,它将被另一个字符串替换,例如从列表中提取的“DZA”。例如,将下载另一个文件。如果您能帮助我创建一个函数,使用r迭代下载并将文件写入工作目录,我将不胜感激 要迭代的字符串列表: strin%未列出() for(列表1中的i){ URL%as.character(.) ) } 用于(URL中的u){ url%子集(,rowname==“状态代码”,select=c(数据1)) c3=infolist1%>%子集(,rowname==

我想从中下载100多个文件。url中唯一更改的字符串是“AGO”,它将被另一个字符串替换,例如从列表中提取的“DZA”。例如,将下载另一个文件。如果您能帮助我创建一个函数,使用r迭代下载并将文件写入工作目录,我将不胜感激

要迭代的字符串列表:
strin%未列出()
for(列表1中的i){
URL%as.character(.)
)
}
用于(URL中的u){
url%子集(,rowname==“状态代码”,select=c(数据1))
c3=infolist1%>%子集(,rowname==“content”,select=c(data1))
infolist1=cbind(c2,c3)%%>%unlist(.)
rm(列表=c('c2','c3'))
colnames(infolist1)=c(“urlx”、“filestatus”、“filepath”)
错误消息:
colnames中的错误您显示了大量超出标题问题范围的额外代码

要下载文件,我将使用
download.file

strin<-structure(list(iso3c = c("DZA", "AGO", "BWA", "BDI", "CMR", "CPV"
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-6L))

for (ss in strin$iso3c)
    download.file(
        paste0("https://biogeo.ucdavis.edu/data/gadm2.8/rds/", ss, "_adm2.rds"),
        paste0(ss, "_adm2.rds"))

strinThanks为此,@Maurits_Evers。我仍在努力理解为什么它对某些URL不起作用。我会让您不断更新。@Krantz“我仍在努力理解为什么它对某些URL不起作用”您确定这些文件存在吗?例如,在上面的示例中,文件
“CPV_adm2.rds”
不存在。仍在确定中。谢谢。它有效。我已经能够使用您的答案解决我的问题。非常有用。太好了。@Krantz非常欢迎您,很高兴它有用。祝您工作顺利。
list1 = strin %>% unlist(.)

for (i in list1){
  urls <- lapply(list1
                 , function(i) paste0("https://biogeo.ucdavis.edu/data/gadm2.8/rds/", i, "_adm2.rds" ) %>% as.character(.)
  )
}

for (u in urls){
  url <- lapply(urls, function(u) GET(u,write_disk(tempfile(fileext = ".RDS")))
  )
}

infolist1 =rownames_to_column(
                  data.frame(
                    as.matrix(
                      unlist(
                        lapply(url, `[`, c('url', 'status_code', 'content'))
                        )
                      )
                    )
                  , var = "rowname")

infolist1$rowname= gsub(".*\\.","",infolist1$rowname) 
colnames(infolist1) = c("rowname", "data1")

c2 = infolist1 %>%  subset(., rowname == "status_code", select = c(data1)) 
c3= infolist1 %>%   subset(., rowname == "content", select = c(data1)) 

infolist1 = cbind(c2,c3)  %>% unlist(.)
rm(list=c('c2', 'c3'))
colnames(infolist1) = c("urlx", "filestatus", "filepath")
strin<-structure(list(iso3c = c("DZA", "AGO", "BWA", "BDI", "CMR", "CPV"
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-6L))

for (ss in strin$iso3c)
    download.file(
        paste0("https://biogeo.ucdavis.edu/data/gadm2.8/rds/", ss, "_adm2.rds"),
        paste0(ss, "_adm2.rds"))