Индексирование PDF в виде списка фреймов данных на основе соответствия шаблону регулярных выражений - PullRequest
0 голосов
/ 23 декабря 2018

При извлечении информации из pdf с использованием tabulizer и pdftools я иногда хотел бы проиндексировать большой список df на основе соответствия шаблону регулярного выражения.

a <- data.frame(yes=c("pension"))
b <- data.frame(no=c("other"))
my_list <- list(a,b)

Я хотел бы использовать str_detect для возвратаиндекс базового df, соответствующий шаблону "pension".

Желаемый результат будет:

index <- 1 (based on which and str_detect)
new_list <- my_list[[index]]
new_list
     yes
1 pension

Как определить шаблон в базовом df и затем вернуть индекс, используя который былборьба.Я вижу предыдущие обсуждения с использованием циклов и операторов if-then, но решение с использованием purrr представляется предпочтительным.

1 Ответ

0 голосов
/ 23 декабря 2018

Мы можем использовать

getIdx <- function(pattern, l)
  l %>% map_lgl(~ any(unlist(map(.x, grepl, pattern = pattern))))

getIdx("pension", my_list)
# [1]  TRUE FALSE

my_list[getIdx("pension", my_list)]
# [[1]]
#       yes
# 1 pension

Это позволяет использовать несколько совпадающих фреймов данных.(Нет необходимости в which на самом деле.)

В getIdx мы перебираем фреймы данных l, затем в данном фрейме данных мы перебираем его столбцы и используем grepl.Если в любом из столбцов есть совпадение, для соответствующего фрейма данных возвращается TRUE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...