如何应用 grepl 来匹配数据框中多列中的值?

How to apply grepl to match values in multiple columns across a data frame?

我想检查我的数据框中一列中的字符串是否在另一列中的字符串中找到。我能够正确地为单个行执行此操作,但是当我将它应用于整个数据框时,某些行的结果不正确。

示例数据df:

col1   col2
XYZ    XYZXYZ
ABC    BCABCA
XX     XYXY

我使用以下代码对各个行进行模式匹配:

grepl(df[1,1], df[1,2], fixed = TRUE)

我使用以下代码跨数据框应用:

df$col3 <- sapply(df$col1, grepl, df$col2)

本例中的第 3 列应为:TRUETRUEFALSE.

grepl 未矢量化 pattern 秒。我们可以使用 str_detect

library(stringr)
str_detect(df$col2, df$col1)
#[1]  TRUE  TRUE FALSE

使用 mapply,它将 grepl 应用到每个 col1col2.

的第一个元素
df$col3 <- mapply(grepl, df$col1, df$col2)
df
#   col1   col2  col3
# 1  XYZ XYZXYZ  TRUE
# 2  ABC BCABCA  TRUE
# 3   XX   XYXY FALSE