我的列表中有大约 40K 数据帧。每个数据框有 7 个变量、3 个因子和 4 个数值。作为参考,这里是第一个数据框:
$ a:'data.frame': 4 obs. of 7 variables:
..$ x1 : Factor w/ 1 level "a": 1 1 1 1
..$ x2 : Factor w/ 4 levels "12345678901234",..: 1 2 3 4
..$ x3 : Factor w/ 4 levels "SAMPLE",..: 1 2 3 4
..$ x4 : int [1:4] 1 2 3 4
..$ x5 : num [1:4] 10 20 30 40
..$ x6: int [1:4] 50 60 70 80
..$ x7 : num [1:4] 0.5 0.7 0.35 1
我正在尝试将这些合并到一个巨大的数据框中,使用:
Reduce(function(...) merge(..., all=T), df_list)
如此处推荐:同时合并多个 data.frames in a list。
如果我拿前 1000 个项目,即
Reduce(function(...) merge(..., all=T), df_list[1:1000])
这会产生所需的结果(将单个数据帧合并为一个)并在 37 秒内完成。
但是,Reduce()
在整个 40K 数据帧列表上运行会花费过多的时间。我已经让它运行超过 5 小时,但它似乎没有完成。
有什么技巧可以用来提高性能Reduce()
,还是有更好的选择?