合并名称相似的CSV文件

时间:2018-08-17 16:49:08

标签: r

我有一个包含数千个CSV文件的目录,所幸遵循严格的命名约定。我正在尝试编写一个将所有以相同的后7位数字结尾的文件分组到单独的数据帧中的函数。

我有一个7位数字模式的向量(u)要匹配:

v <- list.files(wd, full.names = FALSE)
u <- unique(substr(v, 9, 15))

现在,我需要对列表v中的每个文件运行向量u的每个元素,并将v中的所有匹配文件组合为单个u值的数据数据帧。

我尝试了一些没有成功的事情:

#only matches first in list
files <- list.files(pattern=u)

#makes a list of vectors with the same contents
lapply(v, function(x) list.files(pattern=u)) 

#nope
data <- data.frame()
  for (i in 1:length(u)) {
    data <- rbind(data, read.csv(v[files]))
    }

在正确的方向上轻推或推推将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:2)

嵌套调用lapply应该可以做到。对lapply的第一次调用将遍历唯一模式(v)。对于每个模式,第二个lapply循环遍历所有匹配的文件(list.files(pattern=pattern)),读取(read.table)中的文件,然后将它们绑定在一起成为单个data.frame与{{1 }}从bind_rows包中(您也可以使用dplyr,但我发现rbind更简单)并将其返回给外部bind_rows

结果应为lapply中的list,每个都包含与7位数字模式匹配的所有data.frames文件的合并内容。

.csv