str_dectect 的解决方案:
library(tidyverse)
data.frame(list1) %>%
mutate(Flag = str_detect(list1, paste0("(?i)", paste0(fruit, collapse = "|"))))
list1 Flag
1 I like apples TRUE
2 I eat bread FALSE
3 Bananas are my favorite TRUE
如果你想filter(即子集)你的数据:
data.frame(list1) %>%
filter(str_detect(list1, paste0("(?i)", paste0(fruit, collapse = "|"))))
list1
1 I like apples
2 Bananas are my favorite
请注意,(?i) 用于使匹配不区分大小写。
编辑:
要在单独的列中记录匹配项,您可以使用str_extract(如果您希望每个字符串只有一个匹配项)或str_extract_all(对于多个匹配项):
data.frame(list1) %>%
mutate(Flag = str_detect(list1, paste0("(?i)", paste0(fruit, collapse = "|"))),
Match = str_extract_all(list1, paste0("(?i)", paste0(fruit, collapse = "|"))))
list1 Flag Match
1 I like apples TRUE apple
2 I eat bread FALSE
3 Bananas are my favorite TRUE Banana