在 R 中将数据帧列表合并为单个数据帧

问题描述 投票:0回答:2

我有一个非常大的列表(只有一个列表),其中包含 13,500 个元素。每个元素都是一个 1 行 12 列的数据框,每个数据框的结构相同(相同的列名称和每列中的相似数据)。我想将此列表中的所有元素合并到一个数据框中。本质上,新的数据框将有 13,500 行和 12 列。我需要一个数据框中的所有内容才能使用

ggplot
,并且需要能够将数据作为数据框使用。有人可以建议最好的方法吗?感谢您的帮助。

我尝试使用

purr:: merge()
功能,但没有成功。或者至少该过程没有在 10 分钟内完成,我不得不终止 R studio。

以下是列表中的一些数据:

list(structure(list(n1 = 10, n2 = 10, mean_1 = 0, mean_2 = 0, var_1 = 1, var_2 = 1, tpooled = 2.93152220266846, pvalue_pooled = 0.00891647393074033, result_pooled = 1, t_unpooled = 2.93152220266846, pvalue_unpooled = 0.00931815204271521, result_unpooled = 1), class = "data.frame", row.names = "n1"), structure(list(n1 = 30, n2 = 10, mean_1 = 0, mean_2 = 0, var_1 = 1, var_2 = 1, tpooled = -0.312649684961248, pvalue_pooled = 0.756256229272491, result_pooled = 0, t_unpooled = -0.248766791009062, pvalue_unpooled = 0.808124700588531, result_unpooled = 0), class = "data.frame", row.names = "n2"))
r dataframe merge
2个回答
5
投票

另一种选择是使用

bind_rows
中的
dplyr
,它将从数据帧列表中创建一个数据帧,并且是一个相当有效的选项。

library(dplyr)

bind_rows(ll)

但是,正如 @nicola 提到的,来自

rbindlist
data.table
可能是最快的。

data.table::rbindlist(ll)

3
投票

您的

dput()
代码尚未完成,因此我根据您的描述创建一个示例列表:

ll <- vector(mode = "list", length = 100)
for (i in 1:length(ll)){
  ll[[i]] <- data.frame(matrix(runif(12), nrow = 1))
}

这是一个长度为100的列表,每个位置包含一个1行12列的随机数数据框。要使其成为一个大型数据框(100 行和 12 列),请尝试:

ll_df <- do.call(rbind, ll)

输出:

# > ll_df
#     X1          X2         X3          X4         X5          X6         X7         X8          X9         X10        X11         X12
# 1  0.231912927 0.270163433 0.82299350 0.025836254 0.40592551 0.596034614 0.52873965 0.68257091 0.507812908 0.554371795 0.84124010 0.312510160
# 2  0.035948120 0.815994061 0.77857679 0.859379491 0.06571936 0.008806119 0.59168088 0.86961538 0.446291886 0.037575005 0.41029058 0.365216211
# 3  0.476584831 0.133677756 0.47945626 0.264312692 0.48993294 0.906061205 0.50099734 0.70350681 0.057910028 0.689310918 0.79879528 0.018855033
# 4  0.036814572 0.577822232 0.79003586 0.735261033 0.26853772 0.805366424 0.42493288 0.16521519 0.604047569 0.825760356 0.78095093 0.081476899
# 5  0.070758368 0.958960018 0.09029276 0.212251252 0.43920359 0.777871489 0.85140796 0.62472390 0.388040910 0.143754851 0.88167280 0.873741813
# 6  0.338623692 0.513312964 0.49393542 0.793437806 0.91841512 0.586360269 0.82348039 0.80743891 0.281572984 0.508648599 0.29522944 0.867623769
#...
# continues
© www.soinside.com 2019 - 2024. All rights reserved.