R语言如何用for循环创建名称随迭代变化的数据框
你遇到的报错是因为R不支持直接通过data_[i]_2021这种写法动态拼接变量名,系统会把data_识别为一个已存在的对象尝试调用它的第i个元素,自然就会抛出object 'data_' not found的错误。
要实现你要的生成独立月份数据框的需求,用assign()函数就可以完成,修改后的循环代码如下:
months <- c("January", "February", "March", "April", "May", "June", "July", "August", "September", "October") for (m in months) { # 动态生成变量名 var_name <- paste0("data_", m, "_2021") # 动态生成对应文件路径 file_path <- paste0("Data - ", m, " 2021.xlsx") # 将读取到的表格赋值给对应变量名,写入当前环境 assign(var_name, read.xlsx(file_path)) }
运行上述代码后,你需要的data_January_2021到data_October_2021这10个数据框就会直接生成在环境中,可以正常调用。
如果后续需要对这批数据做批量清洗、计算等操作,更推荐把所有数据存在列表里,避免环境中散落太多独立变量,后续处理效率更高,写法参考:
months <- c("January", "February", "March", "April", "May", "June", "July", "August", "September", "October") # 初始化存储列表 data_2021 <- list() for (m in months) { file_path <- paste0("Data - ", m, " 2021.xlsx") # 用月份作为列表名存储对应表格 data_2021[[m]] <- read.xlsx(file_path) } # 调用示例:读取1月数据 # head(data_2021$January)
内容的提问来源于stack exchange,提问作者RLLin
相关产品推荐
相关产品推荐

