2014-02-20 64 views
0

因此,我仍然是一個R newb,所以要溫柔;) 我基本上應該能夠弄清楚這一點,但我認爲沮喪已經設置。 我希望使用write.table簡單地將三列寫入文件(很簡單),但我還希望它通過「\ t」分隔符附加,以便生成的文件是製表符分隔的txt文件。 我附上了我的代碼,它工作正常,但他們通過行追加,所以我很想能夠解決這個問題。任何指針都會很棒!從R中的循環寫入製表符分隔的文件(write.table)

乾杯

要輸出到單個 data.frame
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)  

} 

回答

1

將所有的東西,然後用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) 


} 
+0

我提到那三個數據集是不同的尺寸所以這個選項將不起作用 – Jcrow06

+0

你可以行ID變量添加到每個e1','e2'的'和'e3'(前:'e1 $ id < - 1:nrow(e1)')。然後'tableData < - 合併(e1,e2,by =「id」,all = TRUE)'。然後'tableData < - merge(tableData,e3,by =「id」,all = TRUE)'。較短的數據幀將由底部的NAs填充以具有最大數據幀的行長度。 –

+0

你是一個英雄,有一點點黑客我得到它的工作:)非常感謝你:) – Jcrow06

0

確定,所以嚴重的信用梅森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") 
} 
相關問題