R循环按递增数值生成变量名读取CSV文件报错如何解决?
报错原因
你写的geo_CLEAN_(k) <- xxx语法不符合R的变量赋值规则,R会将这段代码识别为调用名为geo_CLEAN_<-的赋值函数,而该函数不存在,因此抛出报错。
解决方案
方案1:直接生成独立变量(符合你要的geo_CLEAN_1、geo_CLEAN_2的命名要求)
用R内置的assign()函数实现动态变量名赋值,代码如下:
for(k in 1:6){ # 注意:如果你的工作目录没有切换到csv存储的geo文件夹,需要补全路径前缀 csv_name <- paste0("geo/geo_CLEAN", k, ".csv") # 按动态生成的变量名赋值到工作环境 assign(paste0("geo_CLEAN_", k), fread(file = csv_name)) }
运行后即可在工作区直接调用geo_CLEAN_1到geo_CLEAN_6的对应数据。
方案2:用列表存储所有数据(更推荐的工程化写法)
如果后续需要批量处理这批数据,用列表统一存储更方便管理,避免工作区出现大量零散变量:
# 初始化存储列表 geo_data_list <- list() for(k in 1:6){ csv_name <- paste0("geo/geo_CLEAN", k, ".csv") # 用文件名作为列表元素名存储 geo_data_list[[paste0("geo_CLEAN_", k)]] <- fread(file = csv_name) }
调用时可以通过geo_data_list$geo_CLEAN_1或者geo_data_list[[1]]获取对应数据,批量处理时直接用lapply()/purrr::map()循环列表即可,无需重复写变量名。
内容的提问来源于stack exchange,提问作者tchoup
相关产品推荐
相关产品推荐

