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

时间:2017-07-13 14:26:52

标签: r dataframe filenames multiple-files

我正在使用R中的大量.cbs文件。我在这里找到了一些有用的代码(How do you read in multiple .txt files into R?用户Greg的响应),我从.txt更改为.cbs:

以下三行会获取所有文件,并使用以下所有代码行生成一个data.frame“datafr”:

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

假设标签分隔的值带有标题:

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

假设所有文件都有相同的标题/列:

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

这非常适合将文件合并到一个data.frame中,但是我还希望包含新合并数据框中每一行来自文件的文件名。理想情况下,作为data.frame的新第一列。任何人都可以帮我修改这段代码吗?

谢谢,

约翰

2 个答案:

答案 0 :(得分:1)

也许会有以下情况。未经测试,因为没有数据示例。

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

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

答案 1 :(得分:0)

考虑transform

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