如何在R中使用循环批量下载OECD文件并自定义命名保存
R语言批量下载OECD MEI_REAL数据集解决方案
首先给出可直接运行的修改后代码:
library(OECD) # 配置下载参数 country_list <- c("AUS", "BEL", "DEU") # 替换为你需要的国家ISO代码 year_range <- 2000:2019 # 替换为你需要的年份范围 # 双层循环遍历国家+年份组合 for (country in country_list) { for (year in year_range) { # 拉取单国家单年份数据 temp_data <- get_dataset( "MEI_REAL", filter = list(NULL, country), start_time = year, end_time = year ) # 按要求生成文件名并保存 file_name <- paste0("MEI_REAL_", country, "_", year, ".csv") write.csv(temp_data, file = file_name, row.names = FALSE) # 可选:请求频繁报错时取消下行注释,增加1秒请求间隔避免触发限流 # Sys.sleep(1) } }
两个问题的实现逻辑说明
- 多国家多年份循环下载:首先定义国家列表、年份范围两个参数向量,通过双层循环分别遍历国家和年份,每次请求仅拉取单国家单年份的数据,避免单次请求量过大导致接口返回失败。也可以用
expand.grid(country_list, year_range)预先生成所有国家+年份的组合,再通过单层循环遍历组合,实现效果一致。 - 自定义命名保存:使用
paste0()函数拼接固定前缀、国家代码、年份、文件后缀四个要素生成目标文件名,调用write.csv()时将file参数设置为拼接好的文件名即可,row.names = FALSE可以避免输出多余的行号列。如果需要保存到指定文件夹,可在文件名前补充文件夹路径即可。
小提示:如果需要对应国家全称而非ISO代码命名,可提前准备国家代码和全称的映射表,循环时匹配替换文件名中的
country参数即可。
内容的提问来源于stack exchange,提问作者Lejpang
相关产品推荐
相关产品推荐

