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

临时环境中合并多个data frame出错,如何正确实现?

问题原因与解决方案

错误原因

mget(names(tenv), envir = tenv)返回的是由多个数据框组成的列表,直接调用rbind()时,R会将这个列表视为单个输入参数,最终把每个数据框作为一列拼接,而不是按行合并所有数据框,这就是你得到奇怪结果的原因。

正确解决方案

以下几种方法都能实现你期望的按行合并效果:

方法1:使用do.call()传递列表元素为独立参数

do.call()会把列表中的每个元素作为rbind()的独立参数传入,从而完成行合并:

do.call(rbind, mget(names(tenv), envir = tenv))

方法2:使用dplyr::bind_rows()(tidyverse风格)

bind_rows()支持直接接收数据框列表作为输入,语法更简洁直观:

library(dplyr)
bind_rows(mget(names(tenv), envir = tenv))

方法3:使用purrr::map_dfr()(tidyverse风格)

map_dfr()会遍历列表中的每个数据框,并自动按行合并结果:

library(purrr)
map_dfr(tenv, identity)

验证结果

以上任意一种方法执行后,都会得到你期望的输出:

r1 r2
1   1  a
2   2  a
3   1  b
4   2  b
5   1  c
6   2  c
7   1  d
8   2  d
9   1  e
10  2  e

内容的提问来源于stack exchange,提问作者QQQ-17

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:30:00