You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中如何从URL批量下载并以不同名称保存多个.csv文件

批量读取CSV文件到R环境的高效方法

嘿,我太懂你手动逐行敲read.csv的痛苦了——重复代码不仅繁琐,还容易手滑打错年份。针对你这些命名规律极强的数据集,咱们用批量处理就能轻松搞定,下面分享两种实用方案:

方法1:基础R原生实现(无需额外包)

靠R自带的向量和列表操作就能完成,步骤清晰明了:

  1. 先生成年份、对应URL和要保存的对象名:
# 定义年份范围
years <- 2005:2014

# 批量构造所有文件的URL
urls <- paste0("https://tfl.gov.uk/cdn/static/cms/documents/", years, "-gla-data-extract-casualty.csv")

# 构造每个数据框的名称(比如casualty_2005)
obj_names <- paste0("casualty_", years)
  1. 批量读取所有CSV到一个列表:
# 用lapply循环读取每个URL
data_list <- lapply(urls, read.csv, header = TRUE)
  1. 给列表元素命名并导出到全局环境:
# 给列表的每个元素匹配对应的对象名
names(data_list) <- obj_names

# 将列表中的数据框逐一导出为全局环境里的独立对象
list2env(data_list, envir = .GlobalEnv)

运行完这段代码,你就能在R环境里看到casualty_2005到casualty_2014所有数据框,和手动逐行读取的效果完全一致,但代码简洁不止一点点!

方法2:tidyverse风格(用purrr包)

如果你平时习惯用tidyverse工具链,用purrr的map函数会更优雅流畅:

先确保安装并加载purrr包:

install.packages("purrr")
library(purrr)

然后可以用管道流一步完成所有操作:

years <- 2005:2014
urls <- paste0("https://tfl.gov.uk/cdn/static/cms/documents/", years, "-gla-data-extract-casualty.csv")
obj_names <- paste0("casualty_", years)

# 读取数据→命名列表元素→导出到环境
urls %>%
  map(read.csv, header = TRUE) %>%
  set_names(obj_names) %>%
  list2env(envir = .GlobalEnv)

额外小技巧:合并成单个数据框

如果之后需要把年度数据整合到一起分析,可以在读取时直接添加年份列,一步生成合并表:

library(dplyr)
library(tidyr)

combined_data <- tibble(year = years, url = urls) %>%
  mutate(data = map(url, read.csv, header = TRUE)) %>%
  unnest(data)

这样combined_data就是包含所有年份数据的单个数据框,还自带year列方便后续分组统计!

内容的提问来源于stack exchange,提问作者symkly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 08:52:31