我正在使用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
的新第一列。任何人都可以帮我修改这段代码吗?
谢谢,
约翰
答案 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))