从R中的循环中写入制表符分隔文件(write.table)

时间:2014-02-20 14:13:11

标签: r delimiter write.table

所以我仍然是R newb所以要温柔;) 我基本上应该能够解决这个问题,但我认为挫折已经开始了。 我希望使用write.table简单地将三列写入文件(足够简单)但我也希望它通过“\ t”分隔符附加,因此我的结果文件是制表符分隔的txt文件。 我附加了我的代码,它工作正常,但它们通过行附加,所以我希望能够解决这个问题。任何指针都会很棒!

干杯

for(num in 0:10){
  input<-paste("C:\\Users\\Desktop\\non-viewpoint 20-2-14\\HMEC(p9)\\Exp*_HMEC(p9)-IP",num,".txt",sep="")
  files<-Sys.glob(input)
  outfile<-paste("C:\\Users\\Desktop\\non-viewpoint 20-2-14\\exps_HMEC(p9)-IP",num,".txt",sep="")
    exp1<-read.table(files[1],header=TRUE,sep="\t")
    e1<-exp1[grep("9", exp1$Chromosome, invert=TRUE), ]
    write.table(e1$Probe,row.names=FALSE,col.names=FALSE,quote=FALSE,append=TRUE,outfile)
    exp2<-read.table(files[2],header=TRUE,sep="\t")
    e2<-exp2[grep("9", exp2$Chromosome, invert=TRUE), ]
    write.table(e2$Probe,row.names=FALSE,col.names=FALSE,quote=FALSE,append=TRUE,outfile)
    exp3<-read.table(files[3],header=TRUE,sep="\t")
    e3<-exp3[grep("9", exp3$Chromosome, invert=TRUE), ]
    write.table(e3$Probe,row.names=FALSE,col.names=FALSE,quote=FALSE,append=TRUE,outfile)    

}

2 个答案:

答案 0 :(得分:1)

将您要输出的所有内容放入单个data.frame,然后将write.table()sep="\t"参数一起使用:

for(num in 0:10){
  input<-paste("C:\\Users\\Desktop\\non-viewpoint 20-2-14\\HMEC(p9)\\Exp*_HMEC(p9)-IP",num,".txt",sep="")
  files<-Sys.glob(input)
  outfile<-paste("C:\\Users\\Desktop\\non-viewpoint 20-2-14\\exps_HMEC(p9)-IP",num,".txt",sep="")
    exp1<-read.table(files[1],header=TRUE,sep="\t")
    exp2<-read.table(files[2],header=TRUE,sep="\t")
    exp3<-read.table(files[3],header=TRUE,sep="\t")

    e1<-exp1[grep("9", exp1$Chromosome, invert=TRUE), ]
    e2<-exp2[grep("9", exp2$Chromosome, invert=TRUE), ]
    e3<-exp3[grep("9", exp3$Chromosome, invert=TRUE), ]

    tableData <- cbind(e1$Probe, e2$Probe, e3$Probe)

    write.table(tableData,file=outfile,sep="\t",row.names=FALSE,col.names=FALSE,quote=FALSE,append=TRUE)


}

答案 1 :(得分:0)

对Mason DeCamillis这么认真! 这是适合我的解决方案...... 它可能看起来不漂亮,但它确实有效:)再次感谢!

for(num in 0:10){
  input<-paste("C:\\Users\\Desktop\\non-viewpoint 20-2-14\\HMEC(p9)\\Exp*_HMEC(p9)-IP",num,".txt",sep="")
  files<-Sys.glob(input)
  outfile<-paste("C:\\Users\\Desktop\\non-viewpoint 20-2-14\\exps_HMEC(p9)-IP",num,".txt",sep="")
    exp1<-read.table(files[1],header=TRUE,sep="\t")
    e1<-exp1[grep("9", exp1$Chromosome, invert=TRUE), ]

    exp2<-read.table(files[2],header=TRUE,sep="\t")
    e2<-exp2[grep("9", exp2$Chromosome, invert=TRUE), ]

    exp3<-read.table(files[3],header=TRUE,sep="\t")
    e3<-exp3[grep("9", exp3$Chromosome, invert=TRUE), ]


    e1$id <- 1:nrow(e1)
    e1<-cbind(e1,e1$id)
    e2$id <- 1:nrow(e2)
    e2<-cbind(e2,e2$id)
    e3$id <- 1:nrow(e3)
    e3<-cbind(e3,e3$id)
    tableData <- merge(e1, e2, by="id", all=TRUE)
    tableData <- merge(tableData, e3, by="id", all=TRUE)

    ire<-data.frame(tableData$Probe.x)
    eng<-data.frame(tableData$Probe.y)
    fra<-data.frame(tableData$Probe)

    jondata<-cbind(ire,eng,fra)
    write.table(jondata,row.names=FALSE,col.names=FALSE,quote=FALSE,append=TRUE,outfile,sep="\t")
}