2011-12-28 35 views
5

我正試圖自動讀取從另一個分析程序生成的文件。你能指定read.table中的列數嗎?

標準輸出通常在6列中用空格分隔,最後用回車符分隔。 只需使用「read.table」中的「strip.white = TRUE」即可很好地讀取。

我有一個問題,但是,如果一個參數被固定爲一個常量,一個註釋被添加到一行。
添加「沖水= TRUE」讓我跳過這些偶爾的意見和閱讀一切。

我想什麼做的是有這些意見,這可能只在一個給定的文件中出現一次, 添加爲第7列。

是否有閱讀的方法,允許我指定列數或其他方式 accomadating第7列?

數據的一個片段,可以發現here

的數據是這樣的:

columns_1&2 column_3 column_4 column_6 column_6 column_7  
84:S 0:dorm 1.0000000 0.11E-005 0.9999979 1.0000021       
85:p N:veg 1.0000000 0.0000000 1.0000000 1.0000000 Fixed    
86:p 0:dorm 0.260E-08 0.237E-05 -0.03E-05 0.46E-005 

回答

9

如果所有的列都爲整齊排列的那些鏈接的例子(即,如果它是一個「固定的寬度的文件」),那麼這是read.fwf()作業:

df <- read.fwf(file = "http://dl.dropbox.com/u/54791824/SO_data_frag.txt", 
       widths = c(8, 7, 29, 15, 16, 16,1000)) 

head(df,4) 
     V1  V2 V3   V4  V5  V6   V7 
1 82:S 0:dorm 1 1.625420e-06 0.9999968 1.000003      
2 83:S 0:dorm 1 1.083245e-06 0.9999979 1.000002      
3 84:S 0:dorm 1 1.081771e-06 0.9999979 1.000002      
4 85:p N:veg 1 0.000000e+00 1.0000000 1.000000 Fixed 

編輯:可替換地,爲J奧蘭在評論中指出的那樣,你可以使用read.table()fill=TRUE選項:

df2 <- read.table(file = "http://dl.dropbox.com/u/54791824/SO_data_frag.txt", 
        fill = TRUE, 
        col.names=paste("column", 1:7, sep="_") 
+3

@NBrouwer我想你也可以設置'補= TRUE'並直接使用'col.names'指定列名。 – joran 2011-12-28 02:20:47

+0

@joran - 感謝提及其他/更好的選擇。我在上面突出顯示了它。 – 2011-12-28 03:06:32

相關問題