2012-04-23 71 views
1

我有像以下的數據集:R「每個文件多個數據集」

 
0 0 0 
0 0 0 


54077 184965 81.25 
54266 184776 81.25 


65130 199986 82.1705426356589 
65513 199600 82.1705426356589 

那些數據是由2個空白行分隔。所以當我使用gnuplot繪製一個點圖時,他們會認爲這些是在一個文件中分離的數據。如何在R中做同樣的事情?因爲對於每個這樣的數據集,我將有兩個點通過線連接。 (例如,[5077,184965]連接到[54266,199600])

比你非常!

回答

1

您也可以讀取文件到內存中,

> buffer <- readLines ("tmp/file") 
> buffer 
[1] "0 0 0"       "0 0 0"       
[3] ""        ""        
[5] "54077 184965 81.25"   "54266 184776 81.25"   
[7] ""        ""        
[9] "65130 199986 82.1705426356589" "65513 199600 82.1705426356589" 

刪除或進程(例如,得出測量次數,數據集名,...),不知怎的,不屬於與數據表文件的一部分的所有行:

> buffer <- buffer [nzchar (buffer) > 0L] 
> buffer 
[1] "0 0 0"       "0 0 0"       
[3] "54077 184965 81.25"   "54266 184776 81.25"   
[5] "65130 199986 82.1705426356589" "65513 199600 82.1705426356589" 

最後使用read.table上的修改緩衝區:

> read.table (textConnection (buffer)) 
    V1  V2  V3 
1  0  0 0.00000 
2  0  0 0.00000 
3 54077 184965 81.25000 
4 54266 184776 81.25000 
5 65130 199986 82.17054 
6 65513 199600 82.17054 
+0

謝謝!這是工作。 – boyang 2012-04-27 15:03:57

2

兩個想法:

  1. 如果他們都在相同的格式,然後read.table/read.csvblank.lines.skip參數設置爲FALSE,而不是它的默認TRUE。然後你得到一個data.frame,裏面有空行,你可以分割。

  2. 如果它們不是全部格式相同,則可以使用這些相同命令的skip參數來僅拉出輸入文件的某些行。

2

最壞的情況,則必須之前使用readlines方法,其中n = 1至一次讀取一條線,與strsplit分裂,並收集每個數據列表中的設定,想要的分離器(空行)開始列表的新元素。

但是你只需要做,如果GSK3的解決方案失敗,因爲你的數據集是更非結構化有點...