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