r 评估字符串列以确定是否包含在 vecto 中找到的字符

问题描述 投票:0回答:1

我有一个包含字符串的变量的数据框

df <- data.frame(ID = 1:5,
string = c("blah, F21, blah",
     "woop, woop, F25",
     "G1, yes, yes",
     "hey, hey F23",
     "how, G2, how"))

我有一个向量,其中包含我想用来搜索数据框的字符列表

check <- c("F21", "F23", "G1")

我正在寻求帮助来尝试评估字符串变量以确定它是否包含检查向量中的任何字符。 我希望输出 df 看起来像这样

身份证 绳子 测试
1 废话,F21,废话 检查中
2 呜呜呜F25 不在检查中
3 G1,雅达,雅达 检查中
4 嘿嘿,F23 检查中
5 如何,G2,如何 不在检查中

Tidyverse 将非常感激。

斗争巴士停在我的车道上

r string
1个回答
0
投票

您可以形成检查子字符串的正则表达式替换,然后使用

grepl()
检查它们在数据框中是否存在:

check <- c("F21", "F23", "G1")
regex <- paste0("\\b(?:", paste(check, collapse="|"), ")\\b")
df$test <- ifelse(grepl(regex, df$string), "in check", "not in check")
df
© www.soinside.com 2019 - 2024. All rights reserved.