R语言新手所以代码不够优美,但是不管黑猫白猫抓到老鼠就是好猫,希望给后来者多一些启发。
以.tsv文件为例
setwd() #设置文件所在目录
#####批量读取文件下的文件,形成文件名开头的变量,这里我第一行跳过了,所以加上参数skip=1,其他参数等同单独读取文件用法。同理read.csv 一样适用。
mytsvfile = list.files(pattern="*.tsv")
list2env(
lapply(setNames(mytsvfile, make.names(gsub("*.tsv$", "", mytsvfile))),
read.table,header=T,row.names=1,check.names=FALSE,skip = 1), envir = .GlobalEnv)
######
获取去除tsv的文件名称以便后来获取函数名
files<-unlist(lapply(mytsvfile, FUN = function(x) {return(strsplit(x, split = ".tsv")[[1]][1])}))
####建立第一个matrix矩阵,下面看个人习惯。我提取的是每个文件的第六列。get函数是将名称转化为函数。
data<-as.matrix(get(files[1])[,6])
rownames(data)<-row.names(get(files[1]))
colnames(data)<-files[1]
###循环合并一下
for (i in files[-1]){
tmp<-as.matrix(get(i)[,6])
rownames(tmp)<-row.names(get(i))
colnames(tmp)<-i
data<-cbind(data,tmp)
}
####输出文件
write.csv(data,"merge_counts.csv")
网友评论