rbind 列表中的数据帧

rbind dataframes from a list

我的一个功能 return 一个数据帧列表,我需要将其连接成一个数据帧。我这样做使用:

 do.call(rbind,list_df)

这曾经按预期工作。但是由于一些奇怪的原因(这让我发疯了!)它不再这样做了。现在,它不再组合成一个单独的 df,而是将其保留为单独的列表。当我打印输出时,这就是我得到的(列表有 2 个数据帧,每个数据帧有 5 列,并且输出没有连接就这样保留)

 out_df 
[1,] List,5
[2,] List,5

即使我在没有 do.call 的情况下手动尝试这个(如下所示)它仍然给我相同的输出,没有连接:

rbind(list_df[[1]],list_df[[2]])

我不知所措,想弄清楚发生了什么。 (列表中的每个数据框都具有相同的属性 - 相似的列数和相同的名称,因此 rbind'ing 应该可以正常工作)

从"out_df"的输出来看,它看起来像一个嵌套的list。我们可以试试

out <- do.call(rbind, do.call(c, list_df))
str(out)
# 'data.frame':   10 obs. of  5 variables:
# $ v1: int  1 2 3 4 5 1 2 3 4 5
# $ v2: int  6 7 8 9 10 6 7 8 9 10
# $ v3: int  11 12 13 14 15 11 12 13 14 15
# $ v4: int  16 17 18 19 20 16 17 18 19 20
# $ v5: int  21 22 23 24 25 21 22 23 24 25

数据

list_df <- lapply(1:2, function(i) list(data.frame(v1=1:5, 
       v2= 6:10, v3= 11:15, v4 = 16:20, v5= 21:25)))

使用 OP 的代码,

do.call(rbind, list_df)
#     [,1]  
#[1,] List,5
#[2,] List,5