如何应用 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 列应为:TRUE
、TRUE
、FALSE
.
grepl
未矢量化 pattern
秒。我们可以使用 str_detect
library(stringr)
str_detect(df$col2, df$col1)
#[1] TRUE TRUE FALSE
使用 mapply
,它将 grepl
应用到每个 col1
、col2
.
的第一个元素
df$col3 <- mapply(grepl, df$col1, df$col2)
df
# col1 col2 col3
# 1 XYZ XYZXYZ TRUE
# 2 ABC BCABCA TRUE
# 3 XX XYXY FALSE
我想检查我的数据框中一列中的字符串是否在另一列中的字符串中找到。我能够正确地为单个行执行此操作,但是当我将它应用于整个数据框时,某些行的结果不正确。
示例数据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 列应为:TRUE
、TRUE
、FALSE
.
grepl
未矢量化 pattern
秒。我们可以使用 str_detect
library(stringr)
str_detect(df$col2, df$col1)
#[1] TRUE TRUE FALSE
使用 mapply
,它将 grepl
应用到每个 col1
、col2
.
df$col3 <- mapply(grepl, df$col1, df$col2)
df
# col1 col2 col3
# 1 XYZ XYZXYZ TRUE
# 2 ABC BCABCA TRUE
# 3 XX XYXY FALSE