首页 > 解决方案 > 使用另一个数据框和 grepl 在数据框中搜索字符串

问题描述

我需要使用另一个数据框逐列过滤数据框,但是因为匹配不准确,我想使用grepl将是一种方法。

以下代码可以举例说明:

A <- data.frame(X=c("RRT","FGT","UTX","GRW"),Y=c(5,6,9,4))

B <- data.frame(Z=c("PPL","FG","RT","UTX"))

A %>% filter(.,grepl("RT",X))

# the result using a single match
X Y
RRT 5

##desired result

A %>% filter(.,grepl(B,A$X))

A.X  A.Y
RRT  5
FGT  6
UTX  9

实现这一目标的最佳方法是什么?

标签: rtidyverse

解决方案


那这个呢?

> A %>%
+   filter(colSums(outer(B$Z, X, Vectorize(grepl))) > 0)
    X Y
1 RRT 5
2 FGT 6
3 UTX 9

推荐阅读