列表

时间:2015-12-13 08:24:27

标签: r rbind

我的一个函数返回一个数据帧列表,我需要将它连接成一个单独的数据帧。我是这样做的:

 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'应该理想地工作)

1 个答案:

答案 0 :(得分:2)

从“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