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

如何使用while循环对多个数据框执行rbind合并操作?

问题原因

你的猜测完全正确,paste0("test", i)生成的是字符串类型的变量名,不是实际加载在环境中的数据框对象,直接传给rbind相当于把字符串和数据框做行合并,类型不匹配自然会报错。

修正方案

方案1:修改原有循环逻辑

只需要用get()函数把字符串对应的实际对象取出即可,修正后的循环代码如下:

library(dplyr)
test = as.data.frame(matrix(ncol = 3, nrow = 0)) %>%
  setNames(c("num", "source", "target"))
i=1
while (i < 11) {
  test = rbind(test, get(paste0("test", i)))
  i = i + 1
}

方案2:更高效的向量化写法(推荐)

循环逐次绑定会频繁复制数据,数据量大的时候效率很低,推荐先把所有数据框汇总为列表,再一次性合并:

library(dplyr)
# 批量取出10个数据框存入列表
df_list <- lapply(paste0("test", 1:10), get)
# 一次性合并所有数据框
test <- bind_rows(df_list)

如果不用dplyr,基础R也可以实现相同效果:

df_list <- lapply(paste0("test", 1:10), get)
test <- do.call(rbind, df_list)

内容的提问来源于stack exchange,提问作者Caio Scaravajar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:36:04