R 合并多个文件时,如何添加文件名的附加列?
我正在合并几个文件(超过5000个)来做一些分析。下面的脚本将合并所有这些文件,但是,我不知道以后哪个是原始文件。我想做的是用文件名添加一个附加列。Row names=TRUE只添加数字,但我想要确切的名称R 合并多个文件时,如何添加文件名的附加列?,r,list,merge,filenames,R,List,Merge,Filenames,我正在合并几个文件(超过5000个)来做一些分析。下面的脚本将合并所有这些文件,但是,我不知道以后哪个是原始文件。我想做的是用文件名添加一个附加列。Row names=TRUE只添加数字,但我想要确切的名称 setwd("/path") library(data.table) temp2 = list.files(path= "path", pattern="*.txt") myfiles2 = lapply(temp2, funct
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... 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
我还没试过,但我会试试的
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})
myfiles2=lapply(temp2,函数(x){a
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})
myfiles2=lapply(temp2,函数(x){a
myfiles2 = lapply(temp2, function(x) data.frame(read.table(x, header=T, sep="\t", comment.char="#",na.strings=".",stringsAsFactors=FALSE,quote="",fill=FALSE), phenotype = x))
这项工作:
myfiles2 = lapply(temp2, function(x) data.frame(read.table(x, header=T, sep="\t", comment.char="#",na.strings=".",stringsAsFactors=FALSE,quote="",fill=FALSE), phenotype = x))
使用tidyverse
library(dplyr)
library(readr)
library(purrr)
map_dfr(temp2, ~ read_tsv(.x, comment = '#', na = ".", quote = "") %>%
mutate(phenotype = .x))
使用tidyverse
library(dplyr)
library(readr)
library(purrr)
map_dfr(temp2, ~ read_tsv(.x, comment = '#', na = ".", quote = "") %>%
mutate(phenotype = .x))
由于您已经在使用data.table
,因此我建议使用fread()
进行阅读。。
如果使用已收集的文件名命名结果列表,则可以使用data.table::rbindlist()
-函数的idcol
-参数在最终表中使用这些名称
library(data.table)
myfiles2 = lapply( temp2, data.table::fread, fill = TRUE) #optional improvement
names(myfiles2) <- basename(temp2)
data.table::rbindlist(myfiles2, use.names = TRUE, fill = TRUE, idcol = "phenotype")
库(data.table)
myfiles2=lappy(temp2,data.table::fread,fill=TRUE)#可选改进
名称(myfiles2)因为您已经在使用data.table
,我建议使用fread()
进行阅读。。
如果使用已收集的文件名命名结果列表,则可以使用data.table::rbindlist()
-函数的idcol
-参数在最终表中使用这些名称
library(data.table)
myfiles2 = lapply( temp2, data.table::fread, fill = TRUE) #optional improvement
names(myfiles2) <- basename(temp2)
data.table::rbindlist(myfiles2, use.names = TRUE, fill = TRUE, idcol = "phenotype")
库(data.table)
myfiles2=lappy(temp2,data.table::fread,fill=TRUE)#可选改进
名称(myfiles2)