我有一个结构相同的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循环执行此操作,但是有基于矢量的解决方案吗?
do.call 是这样做的基本方式.
do.call(rbind, list.of.dfs)
Run Code Online (Sandbox Code Playgroud)
但是如果你有很多数据项,它可能会很慢,而其他关于SO的讨论集中在如何通过使用自定义函数data.table或plyr包来加快速度.例如:
| 归档时间: |
|
| 查看次数: |
319 次 |
| 最近记录: |