如何用R语言for循环读取子文件夹中CSV并分配至对应变量
修正R循环读取CSV文件的方案
你的循环代码存在两个关键问题:
- 文件名拼接错误:你把变量
i当成了字符串"i",导致生成的路径是2011/abc_file_20i.csv这类错误格式,需要把变量i嵌入到路径拼接逻辑中。 - 变量赋值方式错误:
abc_list是字符向量,无法直接将数据框赋值给它的元素,得用assign()函数来创建对应名称的变量。
方案一:创建单独命名的变量
修正后的循环代码如下:
abc_list <- paste0("abc_file_20", 11:22) for (i in 11:22) { # 生成正确的文件路径 file_path <- paste0("20", i, "/abc_file_20", i, ".csv") # 用assign创建对应名称的变量 assign(paste0("abc_file_20", i), read.csv(file_path)) }
运行后你会得到abc_file_2011到abc_file_2022这些独立的数据框变量。
方案二:用列表存储(更推荐)
单独变量不利于批量操作,把所有数据框存到一个列表里会更方便后续处理:
# 创建空列表 abc_data_list <- list() for (i in 11:22) { file_path <- paste0("20", i, "/abc_file_20", i, ".csv") # 按年份作为列表名称存储数据框 abc_data_list[[paste0("20", i)]] <- read.csv(file_path) }
之后可以通过abc_data_list[["2011"]]访问对应年份的数据,也能轻松用lapply等函数批量处理所有数据。
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

