如何通过循环将字符向量生成的变量存入列表?
问题解决方法
你之前的循环存在两个核心问题:
- 每次循环都直接重新赋值
names_list,最终只会保留最后一次循环的结果; paste0("name_", i)生成的是变量名的字符串,而非变量存储的城市名称实际值。
修正循环写法
先初始化空列表,循环时用get()函数获取对应变量的实际值,再添加到列表对应位置:
# 初始化空列表 names_list <- list() for (i in 1:2) { # 通过变量名字符串获取实际值,存入列表 names_list[[i]] <- get(paste0("name_", i)) }
更高效的替代方案
其实完全不需要先创建name_1、name_2这类单独变量,直接从原向量生成列表更简洁:
# 直接将原向量转为列表 names_list <- as.list(names) # 如果需要给列表元素命名(对应原逻辑中的name_1、name_2),可使用setNames names_list <- setNames(as.list(names), paste0("name_", 1:2))
内容的提问来源于stack exchange,提问作者marc.th
相关产品推荐
相关产品推荐

