r - 如何使用 r 通过使用列表从 url 迭代更新字符串来下载多个文件
问题描述
我想从https://biogeo.ucdavis.edu/data/gadm3.6/Rsf/gadm36_AGO_1_sf.rds下载 100 多个文件。url 中唯一更改的字符串是“AGO”,它将被另一个字符串替换,例如从列表中获取的“DZA”。例如,https://biogeo.ucdavis.edu/data/gadm3.6/Rsf/gadm36_DZA_1_sf.rds将下载另一个文件。对于创建一个使用 r 迭代下载并将文件写入工作目录的函数,我将不胜感激。
要迭代的字符串列表:
strin<-structure(list(iso3c = c("DZA", "AGO", "BWA", "BDI", "CMR", "CPV"
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-6L))
我的尝试:
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")
#错误信息:
colnames <-(tmp, value = 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"))
"CPV_adm2.rds"
这会将所有文件(似乎不存在的文件除外)存储在当前工作文件夹中。
推荐阅读
- purescript - purescript 中列表/数组中的类似记录类型
- angular - 如何清除我的 Angular 2 ng-if textarea 的值,以免它通过
- python-3.x - Python递归与改进
- r - 如何在使用 Microsoft R 的“remoteScript”执行 R 脚本时将控制台中的所有内容保存到文本文件?
- swift - (Swift) 如何使用 Segue 将 textField 传递给另一个 ViewController 下的 TableViewCell?
- java - 如何将 JComponents 放置在 Jframe 背景图像上?
- java - 找不到适合 jdbc:derby 的驱动程序
- java - 从 OpenAPI 生成 Spring MVC 映射时可以添加方法参数吗?
- swift - 如何制作一个空的 Int 变量?
- linux - 将 RTF 粘贴为格式化的 Markdown;将 Markdown 导出为格式化的 HTML