Я пытаюсь извлечь табличные данные из символьного вектора, созданного пакетом pdftools
. Выход (когда обрезается) выглядит следующим образом:Прочитать таблицу из PDF с помощью pdftools
pdftext <- c(" Clostridium perfringens no./100ml 0 0 0 0 1409 0 0\n Colony count 22°C cfu/ml - 0 15.673 >300.000 52 0 0\n Colony count 37°C cfu/ml - 0 3.942 41 52 0 0")
lines <- strsplit(pdftext,"\n")
lines
[[1]]
[1] " Clostridium perfringens no./100ml 0 0 0 0 1409 0 0"
[2] " Colony count 22°C cfu/ml - 0 15.673 >300.000 52 0 0"
[3] " Colony count 37°C cfu/ml - 0 3.942 41 52 0 0"
Я был расщепление и соединение их в матрицу символов с помощью:
do.call(rbind,lapply(lines, function(x) {strsplit(x," [ ]+")})[[1]])
Это терпит неудачу, потому что есть только одно пространство между колонной, содержащей 15.673 >300.000
.
Там может быть более чем один вопрос здесь:
- как я прохожу вектор символов в read.fwf?
- Вы можете предложить лучшее регулярное выражение, которое разделяет
15.673 >300.000
, но неColony count 22°C
? - есть ли простой способ разделить эту таблицу? Мой код выглядит немного неуклюжим.
спасибо.
не идеален, но 'read.table (текст = pdftext, row.names = NULL)' close – rawr
или 'read.csv (text = gsub ('{2,} | (? =>)', ', ', trimws (pdftext), perl = TRUE), row.names = NULL, stringsAsFactors = FALSE) ' – rawr
@rawr' read.table' (и 'read.fwf') дать эту ошибку« Файл »должен быть символом строка или соединение ". Я должен был подробно остановиться на вопросе 1. Ваш код 'read.csv' выглядит лучше, чем первая строка становится заголовками столбцов – whanrott