Читать таблицу с пробелами в одном столбце

Я пытаюсь извлечь таблицы из очень больших текстовых файлов (компьютерные журналы). Дикоа дал очень полезный совет по раннему вопросу по этой теме: извлечение таблицы из текстового файла.

Я изменил его предложение, чтобы оно соответствовало моей конкретной проблеме, и разместил свой код по ссылке выше.

К сожалению, я столкнулся с осложнением. Один столбец в таблице содержит пробелы. Эти пробелы генерируют ошибку, когда я пытаюсь запустить код по ссылке выше. Есть ли способ изменить этот код, или конкретно read.table функция для распознавания второго столбца ниже как столбца?

Вот фиктивная таблица в фиктивном журнале:

> 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 код, который я пытаюсь использовать. Этот код работает, если во втором столбце, столбце модели нет пробелов:

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что, вероятно, все равно оставило бы меня с той же проблемой, что и выше.

РЕДАКТИРОВАТЬ:

Кажется, что все пробелы идут прямо перед и сразу после знака плюс. Возможно, эту информацию можно использовать здесь, чтобы заполнить пробелы или удалить их.

1 ответ

Решение

Попробуйте вставить my.data$model <- gsub(" *\\+ *", "+", my.data$model) до read.table

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

my.data$model <- gsub(" *\\+ *", "+", my.data$model)

x <- read.table(text=my.data, comment.char = ">")
Другие вопросы по тегам