R批量合并文件特定列

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容