1

次のようなデータセットがあります。

0 0 0
0 0 0


54077 184965 81.25
54266 184776 81.25


65130 199986 82.1705426356589
65513 199600 82.1705426356589

これらのデータは 2 つの空白行で区切られていました。そのため、gnuplot を使用してドットプロットを描画すると、それらは 1 つのファイル内の分離されたデータであると見なされます。Rで同じことをする方法?? そのようなデータセットごとに、線で結ばれた 2 つのポイントがあるためです。(例: [5077,184965] は [54266, 199600] に接続)

どうもありがとうございました!

4

3 に答える 3

2

最悪の場合、n=1 で readLines を使用して一度に 1 行ずつ読み取り、strsplit で分割し、リスト内の各データ セットを収集して、リストの新しい要素を開始する前にセパレータ (空白行) を探す必要があります。 .

ただし、データセットがもう少し構造化されていないためにgsk3のソリューションが失敗した場合にのみ、それを行う必要があります...

于 2012-04-23T12:40:59.503 に答える
2

2つの考え:

  1. それらがすべて同じ形式の場合、 /のblank.lines.skip引数をデフォルトの TRUE ではなく FALSE に設定します。次に、分割できる空白行を含む data.frame を取得します。read.tableread.csv

  2. それらがすべて同じ形式ではない場合、skipそれらの同じコマンドの引数を使用して、入力ファイルの特定の行のみを引き出すことができます。

于 2012-04-23T12:37:45.310 に答える
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
于 2012-04-23T16:09:50.850 に答える