0

非常に大きなテキスト ファイル (コンピュータ ログ) からテーブルを抽出しようとしています。Dickoa は、このトピックに関する以前の質問に非常に役立つアドバイスを提供しました:テキスト ファイルからテーブルを抽出する

特定の問題に合わせて彼の提案を修正し、上記のリンクにコードを投稿しました。

残念ながら、私は合併症に遭遇しました。テーブルの 1 つの列にスペースが含まれています。上記のリンクでコードを実行しようとすると、これらのスペースでエラーが発生します。そのコード、または具体的にはread.table下の2列目を列として認識する関数を変更する方法はありますか?

ダミー ログのダミー テーブルは次のとおりです。

> collect.models(, adjust = FALSE)
                                                                           model npar      AICc    DeltaAICc       weight  Deviance
5   AA(~region + state + county + city)BB(~region + state + county + city)CC(~1)   17  11111.11    0.0000000 5.621299e-01  22222.22
4                 AA(~region + state + county)BB(~region + state + county)CC(~1)   14  22222.22    0.0000000 5.621299e-01  77777.77
12                                  AA(~region + state)BB(~region + state)CC(~1)   13  33333.33    0.0000000 5.621299e-01  44444.44
12                                                  AA(~region)BB(~region)CC(~1)    6  44444.44    0.0000000 5.621299e-01  55555.55
> 
> # the three lines below count the number of errors in the code above

これが私が使用しようとしているRコードです。このコードは、2 列目のモデル列にスペースがない場合に機能します。

my.data <- readLines('c:/users/mmiller21/simple R programs/dummy.log')

top    <- '> collect.models\\(, adjust = FALSE)'
bottom <- '> # the three lines below count the number of errors in the code above'

my.data  <- my.data[grep(top, my.data):grep(bottom, my.data)]

x <- read.table(text=my.data, comment.char = ">")

topログは巨大で可変的で複雑であるため、変数を使用bottomしてログ内のテーブルを見つける必要があると思います。また、すべてのテーブルに同じ数のモデルが含まれているわけではありません。

AAおそらく、すべてのモデル名の と現在を利用して正規表現を使用できますが、CC(~1)どのように開始すればよいかわかりません。助けてくれてありがとう、フォローアップの質問でごめんなさい。最初の質問では、より現実的な例の表を使用する必要がありました。大量のログがあります。それ以外の場合は、テーブルを手動で抽出して編集することができます。テーブル自体は奇妙なオブジェクトであり、直接エクスポートすることしかできませんでしたcapture.output。おそらく、上記と同じ問題が残るでしょう。

編集:

すべてのスペースは、プラス記号の直前と直後にあるようです。おそらく、その情報をここで使用して、スペースを埋めたり、削除したりできます。

4

1 に答える 1