Я пытаюсь извлечь таблицы из очень больших текстовых файлов (журналов компьютеров). Дикоа дал очень полезный совет по более раннему вопросу по этой теме: extracting table from text fileчтение таблицы с пробелами в одном столбце
Я изменил его предложение, чтобы он соответствовал моей конкретной проблеме, и разместил мой код по ссылке выше.
К сожалению, я столкнулся с осложнением. Один столбец в таблице содержит пробелы. Эти пробелы генерируют ошибку, когда я пытаюсь запустить код по ссылке выше. Есть ли способ изменить этот код или, в частности, функцию 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
, что, вероятно, оставило бы меня с той же проблемой, что и выше.
EDIT:
Все пространства опоздавшим прямо перед и сразу после знака плюс. Возможно, эту информацию можно использовать здесь, чтобы заполнить пробелы или удалить их.
Может быть хорошим, чтобы заменить ситуации с ' "+ "и'" +" ', отдельно, в случае несовпадения в интервале. – Thomas
@Ricardo Saporta Спасибо. Это почти сработало. Мне пришлось изменить одну строку на: my.data <- gsub ("\\ +", "+", my.data) Затем мне пришлось установить row.names = NULL в read.table. –
Марк, рад, что это помогло. Также см. Редактирование –