r - 基于正则表达式模式匹配将 PDF 索引为数据帧列表
问题描述
在使用 tabulizer 和 pdftools 从 pdf 中提取信息时,我有时想根据正则表达式模式匹配索引大量 df 列表。
a <- data.frame(yes=c("pension"))
b <- data.frame(no=c("other"))
my_list <- list(a,b)
我想使用 str_detect 返回与模式“养老金”匹配的基础 df 索引。
所需的输出将是:
index <- 1 (based on which and str_detect)
new_list <- my_list[[index]]
new_list
yes
1 pension
如何检测底层 df 中的模式,然后返回使用一直很困难的索引。我看到以前的讨论使用循环和 if-then 语句,但使用 purrr 的解决方案似乎更受欢迎。
解决方案
我们可能会使用
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
则为相应的数据框返回。
推荐阅读
- mysql - 查询以更新 SQL 中的特定列字段
- audio - 高效使用 pa_simple api
- excel - Excel 单元格中的自动调整和 minHeight
- haskell - Haskell 'do' 块中的最后一条语句必须是表达式错误
- angular - 在 Wildfly 中托管 Angular 7 应用程序作为静态内容
- javascript - 无法在 React 中重现淡入效果
- c# - 将包含所有数据的 C# DateTime 格式
- php - 提交数月后将值保留在选择标签(for循环)中
- android - 如何防止android中的内存泄漏?
- javascript - 在 Enzym 中作为 prop 传递的调用函数