将任意长的数据帧列表简化为单个数据帧

Mat*_*agg 0 r

我有一个结构相同的csv文件目录.我正在尝试将所有这些加载到单个data.frame中.目前我使用lapply()read.csv()获得data.frames的名单,我期待一个优雅的方式来此列表转换为避免外在的循环一个data.frame.

我的结果lapply(list.of.file.names,read.csv)可以近似为这个结构:

list.of.dfs <- list(data.frame(A=sample(seq(from = 1, to = 10), size = 5),
                               B=sample(seq(from = 1, to = 10), size = 5)), 
                    data.frame(A=sample(seq(from = 1, to = 10), size = 5),
                               B=sample(seq(from = 1, to = 10), size = 5)), 
                    data.frame(A=sample(seq(from = 1, to = 10), size = 5),
                               B=sample(seq(from = 1, to = 10), size = 5))
                    )
Run Code Online (Sandbox Code Playgroud)

适用于任意长度列表的以下行的优雅版本是什么:

one.data.frame <- rbind(list.of.dfs[[1]],list.of.dfs[[2]],list.of.dfs[[3]])
Run Code Online (Sandbox Code Playgroud)

我可以使用for循环执行此操作,但是有基于矢量的解决方案吗?

the*_*ail 5

do.call 是这样做的基本方式.

do.call(rbind, list.of.dfs)
Run Code Online (Sandbox Code Playgroud)

但是如果你有很多数据项,它可能会很慢,而其他关于SO的讨论集中在如何通过使用自定义函数data.tableplyr包来加快速度.例如:

为什么rbindlist比rbind"更好"?

Rbind可以在R中并行化吗?

rbind.data.frame的性能