我的一个函数返回一个数据帧列表,我需要将它连接成一个单独的数据帧。我是这样做的:
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'应该理想地工作)
答案 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