r循环遍历文件夹并搜索文件,然后连接数据

时间:2017-04-19 22:46:50

标签: r csv find concatenation

我有一个基本文件夹,里面有很多文件夹。我想转到每个文件夹,找到一个名为table_amzn.csv(如果存在)的文件,然后读取R中的所有这些文件,并将所有文件一个接一个地放在一个数据帧中。我已经验证所有文件都有相同的列。我知道如何将CSV读入R.但是我怎么能遍历基础文件夹中的所有文件夹并连接数据

2 个答案:

答案 0 :(得分:3)

以下是最近添加到包rio的实现:

files <- list.files(pattern = "table_amzn.csv", recursive = TRUE, full.names = TRUE)

devtools::install_github("leeper/rio")
library(rio)
df <- import_list(files, rbind = TRUE)

这会将files中的所有对象加载到单个data.frame对象中。或者,如果您使用rbind = FALSE进行呼叫,则会返回data.frames列表

答案 1 :(得分:2)

这在基础R中也可以直接:

## change `dir` to whatever your 'base folder' actually is
dir <- '~/base_folder'
ff <- list.files(dir, pattern = "table_amzn.csv", recursive = TRUE, full.names = TRUE)

out <- do.call(rbind, lapply(ff, read.csv))

如果您的列相同但由于某种原因(拼写错误等)具有不同的列名称,您可以修改上述内容,如:

out <- do.call(rbind, lapply(ff, read.csv, header = FALSE, skip = 1))
names(out) <- c('stub1', 'stub2') # whatever they should be