首页 > 解决方案 > 合并多个文件时如何添加带有文件名的附加列?

问题描述

我正在合并几个文件(超过 5000 个)来做一些分析。下面的脚本将合并所有这些文件,但是,我以后不知道哪个是原始文件。我想做的是添加一个带有文件名的附加列。Row names = TRUE 只添加数字,但我想要确切的名称。

setwd("/path")
library(data.table)
temp2 = list.files(path= "path", pattern="*.txt")

myfiles2 = lapply(temp2, function(x)read.table(x, header=T, sep="\t", comment.char="#",na.strings=".",stringsAsFactors=FALSE,quote="",fill=FALSE))

merged_dataset <- data.table::rbindlist(myfiles2,fill=TRUE)

write.table(merged_dataset, file="merged_dataset.txt", sep="\t", quote=FALSE, row.names=FALSE)

我现在的输出:

chr     pos     ref     alt...  
1       1902906 T       G...
1       1904677 A       C...
2       1976878 C       G...
3       1908790 C       T...
1       1904566 T       A...
2       1966789 T       G...

我想要什么:

chr     pos     ref     alt...  phenotype  
1       1902906 T       G...    filename.txt
1       1904677 A       C...    filename.txt
2       1976878 C       G...    filename.txt
3       1908790 C       T...    filename.txt
1       1904566 T       A...    filename2.txt
2       1966789 T       G...    filename2.txt

标签: rlistmergefilenames

解决方案


我没试过,但我会试试

myfiles2 = lapply(temp2, function(x){a<- read.table(x, header=T, sep="\t", comment.char="#",na.strings=".",stringsAsFactors=FALSE,quote="",fill=FALSE); a$phenotype <- x})


推荐阅读