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
我的一个功能 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