2012-01-11 71 views
2

所以,我有一個數據框,我通過將NA的較短長度延長來組合不同長度的列表來形成數據框。使用新行代替NA寫表

例子:

  [,1] [,2]  [,3] [,4] [,5]  [,6] 
PAHS.147A "TNF" "TRAF6" NA NA  NA  NA  
PAHS.122A "TRAF6" "TRIM25" NA NA  NA  NA  
PAHS.012A "TRAF3" "TRAF4" NA NA  NA  NA  
PAHS.3012A "CD40" "CD40LG" "CD5" "CD70" "CDKN1A" "CEBPB" 
PAHS.038A "VEGFA" "VWF" NA NA  NA  NA  
PAHS.084A "ULK2" "UVRAG" NA NA  NA  NA 

我想用write.table()寫表的製表符分隔的文本文件,但不是有NA的,我只是想開始一個新行每當行達到NA。有沒有簡單的方法來做到這一點?

我試着將NA設置爲「」,但我仍然有選項卡來指示缺少的值。在這一點上,我只想要一個新的行而不是製表符。

回答

4

因爲write.table被設計成定期輸出對象(data.frames和矩陣)與某種分離的,你可能會得到更多的牽引力與cat一個,writewriteLines

txt <- data.frame(a="a", b="b", c=NA, d=NA ,e=NA) 
txt <- txt[rep(1,10),] # 10 copies 
apply(txt,1,function(x) cat(x[!is.na(x)], "\n", file="out.txt", append=TRUE)) 
+2

+1 。這很好。接下來,爲了得到一個製表符分隔的文件,用最後一行代替'function(x)':cat(paste(x [!is.na(x)],collapse =「\ t」),sep =「\ n」,file =「out.txt」,append = TRUE)'。 – 2012-01-11 20:24:38

+0

製表符。我忘了標籤。感謝您修復這個遺漏。 – 2012-01-11 20:35:17