You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言循环中如何调用指定命名dataframe配合rbind完成数据合并

问题原因

paste0()生成的是字符串类型的对象名,并不是R环境中实际存储的dataframe对象,直接传入rbind()无法识别为数据对象,自然无法完成合并。你需要通过get()函数根据字符串名称提取环境中对应的实际数据对象。
另外你原循环中的拼接代码存在语法错误:paste0("df_", i "_1")漏了i后的逗号,正确写法为paste0("df_", i, "_1")。

修正后的循环实现

场景1:生成每个字母对应的合并后独立数据框

运行后会生成df_a、df_b、df_c三个分别合并后的独立数据框:

for (i in letters) {
  # 提取对应名称的两个dataframe,按行合并
  merged_df <- rbind(get(paste0("df_", i, "_1")), get(paste0("df_", i, "_2")))
  # 为合并结果赋值对应名称,存入当前环境
  assign(paste0("df_", i), merged_df)
}

场景2:所有数据框合并为一个总数据框

# 初始化空结果对象
total_df <- data.frame()
for (i in letters) {
  temp_1 <- get(paste0("df_", i, "_1"))
  temp_2 <- get(paste0("df_", i, "_2"))
  total_df <- rbind(total_df, temp_1, temp_2)
}

更高效的非循环实现(推荐)

如果不需要单独生成每个字母的合并结果,直接合并所有符合命名规则的数据框,可以用更简洁的向量式操作完成:

# 匹配所有符合命名规则的对象名,提取后一次性按行合并
total_df <- do.call(rbind, lapply(ls(pattern = "^df_[a-c]_[1-2]$"), get))

内容的提问来源于stack exchange,提问作者Andres Gonzalez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:24:03