2014-10-30 105 views
-1

我正在使用R從文件中選擇前2列,並使用函數「table」從中創建矩陣,然後將其打印到文件中。問題是標題向左移動1個單元格。R中的打印矩陣到文件

輸入文件是:

ExoT ID3 99.64 1374 5 0 1 1374 15428 16801 0.0 2510 
ExoT ID2 99.64 1374 5 0 1 1374 11168 12541 0.0 2510 
ExoT ID1 99.64 1374 5 0 1 1374 11942 13315 0.0 2510 
ExoU ID3 100.00 2064 0 0 1 2064 1144684 1146747 0.0 3812 
ExoU ID2 100.00 2064 0 0 1 2064 1245564 1247627 0.0 3812 
ExoU ID1 100.00 2064 0 0 1 2064 1156352 1158415 0.0 3812 
ExoS ID1 100.00 2064 0 0 1 2064 1156352 1158415 0.0 3812 

所需的輸出是:

 ID1 ID2 ID3 
    ExoS 1 0 0 
    ExoT 1 1 1 
    ExoU 1 1 1 

實際的輸出是:

ID1 ID2 ID3 
    ExoS 1 0 0 
    ExoT 1 1 1 
    ExoU 1 1 1 

看來,一個塔布在開始時失蹤!

我的代碼是:

args <- commandArgs(TRUE) 
blast_file <- read.table(args[1]) 
selected <- subset(blast_file, select = c(V1, V2)) 
table (selected) 
final <- table (selected) 
write.table(final,file=args[2],sep="\t") 

任何想法?

+0

如果你把在'write.table'調用中'col.names = NA'選項應該修復因爲ExoS而導致列號 – Bernardo 2014-10-30 14:52:15

+0

不匹配,等等都是row.names,所以沒有列標題相關... – Cath 2014-10-30 14:53:08

+0

@CathG,正好。另一種選擇是使用'row.names = FALSE'選項省略行名稱 – Bernardo 2014-10-30 15:05:02

回答

1

爲了使您的row.namescol.names和具有起初塔布,您可以導出文件分爲兩步:

第一:

write.table(c("",colnames(final)),file=args[2],sep="\t") 

則:

write.table(final,file=args[2],sep="\t",col.names=F,append=T,row.names=T)