R 将任意长的数据帧列表简化为单个数据帧
我有一个结构相同的csv文件目录。我正在尝试将它们全部加载到单个data.frame中。目前,我使用R 将任意长的数据帧列表简化为单个数据帧,r,R,我有一个结构相同的csv文件目录。我正在尝试将它们全部加载到单个data.frame中。目前,我使用lappy()和read.csv()来获取data.frames列表,我正在寻找一种优雅的方法将此列表转换为data.frames,以避免显式循环 mylappy(list.of.file.names,read.csv)的结果可以近似为以下结构: list.of.dfs <- list(data.frame(A=sample(seq(from = 1, to = 10), size = 5)
lappy()
和read.csv()
来获取data.frames列表,我正在寻找一种优雅的方法将此列表转换为data.frames,以避免显式循环
mylappy(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))
)
list.of.dfsdo.call
是执行此操作的基本方法
do.call(rbind, list.of.dfs)
但是,如果你有很多数据项,那么速度可能会很慢。关于S.O.的其他讨论集中在如何通过使用自定义函数或data.table
或plyr
包来加快速度。例如:
@最近的邮件提到了这一点,但您可能希望使用以下方法来提高速度:
rbindlist(list.of.dfs)
(需要library(data.table)
)do.call(rbind,list.of.dfs)
是的,一旦你知道了do.call
的功能,这个功能就非常简单了。是的,这是重复的。不知怎么的,我没有找到前面的那个。不好意思地投票结束我自己的问题。
rbindlist(list.of.dfs)