2013-10-15 68 views
1

讓我們supponse一個有載體組成的字符串,就像這樣:與作爲NA空單元格中讀取文本

> string 
[1] " 26  10.00  28.00  28.00  28.00  28.00  28.00 28.00  26" 
[2] " 27  10.00  28.00  28.00  28.00  28.00  28.00 28.00  27" 
[3] " 28  10.00  28.00  28.00  28.00  28.00  28.00 28.00  28" 
[4] " 29  10.00     28.00  28.00  28.00  28.00 28.00  29" 
[5] " 30  10.00     28.00  28.00  28.00  28.00 28.00  30" 
[6] " 31  10.00     28.00    28.00    28.00  31" 

,我想讀它作爲data.frame 6行9列,就像這樣:

V1 V2 V3 V4 V5 V6 V7 V8 V9 
1 26 10 28 28 28 28 28 28 26 
2 27 10 28 28 28 28 28 28 27 
3 28 10 28 28 28 28 28 28 28 
4 29 10 NA 28 28 28 28 28 29 
5 30 10 NA 28 28 28 28 28 30 
6 31 10 NA 28 NA 28 NA 28 31 

其中每個空單元被認爲是NA。我試着使用read.table和設置fill=TRUE,但它不工作,因爲結果是這樣的:

> read.table(textConnection(string), sep="", fill=TRUE) 
    V1 V2 V3 V4 V5 V6 V7 V8 V9 
    1 26 10 28 28 28 28 28 28 26 
    2 27 10 28 28 28 28 28 28 27 
    3 28 10 28 28 28 28 28 28 28 
    4 29 10 28 28 28 28 28 29 NA 
    5 30 10 28 28 28 28 28 30 NA 
    6 31 10 28 28 28 31 NA NA NA 

我堅持這一點。也許它比我想象的更容易,但我無法弄清楚如何做到這一點:(

這裏的數據:

string <- c(" 26  10.00  28.00  28.00  28.00  28.00  28.00 28.00  26", 
       " 27  10.00  28.00  28.00  28.00  28.00  28.00 28.00  27", 
       " 28  10.00  28.00  28.00  28.00  28.00  28.00 28.00  28", 
       " 29  10.00     28.00  28.00  28.00  28.00 28.00  29", 
       " 30  10.00     28.00  28.00  28.00  28.00 28.00  30", 
       " 31  10.00     28.00    28.00    28.00  31") 

回答

4

看起來你可以使用read.fwf()

ff <- tempfile() 
cat(file = ff, "12 34 56", "98 54", sep = "\n") 
read.fwf(ff, widths=c(3,3,2)) 
# V1 V2 V3 
# 1 12 34 56 
# 2 98 NA 54 
相關問題