Читать таблицу с пробелами в одном столбце
Я пытаюсь извлечь таблицы из очень больших текстовых файлов (компьютерные журналы). Дикоа дал очень полезный совет по раннему вопросу по этой теме: извлечение таблицы из текстового файла.
Я изменил его предложение, чтобы оно соответствовало моей конкретной проблеме, и разместил свой код по ссылке выше.
К сожалению, я столкнулся с осложнением. Один столбец в таблице содержит пробелы. Эти пробелы генерируют ошибку, когда я пытаюсь запустить код по ссылке выше. Есть ли способ изменить этот код, или конкретно 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 = ">")