我想检查是否在另一列的字符串中找到了数据框中的一列字符串。我能够正确地对单个行执行此操作,但是当我将其应用于整个数据框时,某些行的结果不正确。
示例数据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
。
答案 0 :(得分:1)
grepl
未向量化pattern
。我们可以使用str_detect
library(stringr)
str_detect(df$col2, df$col1)
#[1] TRUE TRUE FALSE
答案 1 :(得分:0)
使用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