R批量合并文件特定列

作者: 落寞的橙子 | 来源:发表于2019-01-15 10:34 被阅读5次

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")

相关文章

网友评论

    本文标题:R批量合并文件特定列

    本文链接:https://www.haomeiwen.com/subject/wwsjgftx.html