如何在R语言循环中从字符向量创建对应命名的对象?
解决方案
方法一:直接创建全局环境变量
你原来的循环只是在每次迭代中覆盖局部变量ind,并没有将读取的数据框绑定到对应名称的全局对象上。可以用assign()函数实现需求:
v <- c("ind1_2015", "ind1_2016", "ind1_2017") for (ind in v) { assign(ind, readRDS(paste0(ind, ".RDS"))) }
assign()的第一个参数是要创建的变量名(字符串),第二个参数是变量对应的内容,执行后就能在全局环境中生成ind1_2015、ind1_2016、ind1_2017三个数据框。
方法二:用列表统一管理(推荐)
在R中更规范的做法是将多个相关数据框存放在一个列表里,既避免全局环境变量过多导致混乱,后续批量处理也更方便:
v <- c("ind1_2015", "ind1_2016", "ind1_2017") # 读取所有RDS文件并生成列表 data_list <- lapply(v, function(name) readRDS(paste0(name, ".RDS"))) # 给列表元素命名,对应原文件名 names(data_list) <- v # 提取单个数据框示例 # data_list$ind1_2015 # data_list[["ind1_2016"]]
内容的提问来源于stack exchange,提问作者Miquel
相关产品推荐
相关产品推荐

