如何通过使用列表从url迭代更新字符串来使用r下载多个文件
我想从中下载100多个文件。url中唯一更改的字符串是“AGO”,它将被另一个字符串替换,例如从列表中提取的“DZA”。例如,将下载另一个文件。如果您能帮助我创建一个函数,使用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==
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"))