将多个 .csv 文件合并到一个数据框中,在新的第一列中包含文件名

Merge mutiple .cbs files into one data frame that includes the file names in a new first column

我在 R 中处理大量 .cbs 文件。我在这里找到了一段有用的代码(How do you read in multiple .txt files into R? 用户 Greg 的回复),我将其从 .txt 更改为 .cbs:

以下三行获取所有文件并制作一个 data.frame "datafr",所有代码行在:

filelist = list.files(pattern = ".*.cbs")

假设用制表符分隔值 header:

datalist = lapply(filelist, function(x)read.table(x, header=T)) 

假设所有文件都相同header/columns:

datafr = do.call("rbind", datalist)

这对于将文件合并为一个文件非常有效 data.frame,但是我还想包括新合并数据框中每一行的原始文件名称。理想情况下作为 data.frame 的新第一列。谁能帮我修改这段代码?

谢谢,

约翰

也许下面会做。未经测试,因为没有数据示例。

datalist = lapply(seq_along(datalist), function(i){
        datalist[[i]]["filename"] <- filelist[[i]]
        datalist[[i]]
    }) 

我还应该提到,我和许多其他人更喜欢赋值运算符 <- 而不是 =

考虑 transform:

datalist = lapply(filelist, function(x) transform(read.table(x, header=T), filename=x))