I am working with a large number of .cbs files in R. I have found a useful bit of code here (How do you read in multiple .txt files into R? user Greg's response) which I changed from .txt to .cbs:
Following three lines takes all the files and makes one data.frame
"datafr" with all lines of code in:
filelist = list.files(pattern = ".*.cbs")
Assuming tab separated values with a header:
datalist = lapply(filelist, function(x)read.table(x, header=T))
Assuming the same header/columns for all files:
datafr = do.call("rbind", datalist)
This works really well for merging the files into one data.frame
, however I would like to also include the name of the file that each line in the new merged data frame came from orignially. Ideally as a new first column of the data.frame
. Can anyone please help me adapt this code?
Thanks,
John
Maybe the following will do. Untested, since there is no data example.
datalist = lapply(seq_along(datalist), function(i){
datalist[[i]]["filename"] <- filelist[[i]]
datalist[[i]]
})
I should also mention that I, and many others, prefer the assignment operator <-
over =
.