R语言 是列表的每个元素中搜索的字符串之一

erhoui1w  于 2023-05-20  发布在  其他
关注(0)|答案(2)|浏览(146)

我有一个字符串列表,我分成一个列表和两个字符串,我想寻找

string <- c("ABC, BCD, DAB", "BCA, CDA, ABDA")

s1 <- "AB"

s2 <- "CD"

除以", ",我想看看在strsplit()创建的列表的每个元素中,我是否可以找到我要找的字符串。
因此,结果应遵循以下逻辑:
对于第一个字符串:TRUE,TRUE,TRUE --> TRUE
对于第二个字符串:FALSE,TRUE,TRUE --> FALSE
我可以使用dplyr吗?

zc0qhyus

zc0qhyus1#

在这里使用dplyr并不是正确的工具。在base R中,它是一行程序:

lapply(strsplit(string, ', '), \(x) all(grepl(paste(s1, s2, sep = '|'), x)))
#> [[1]]
#> [1] TRUE
#> 
#> [[2]]
#> [1] FALSE
mnemlml8

mnemlml82#

以下是purrr解决方案:

string_list <- strsplit(string, ", ")

library(purrr)

map_lgl(string_list, ~ all(grepl(s1, .x) | grepl(s2, .x)))

#or
library(stringr)

map_lgl(string_list, ~ all(str_detect(.x, s1) | str_detect(.x, s2)))
[1]  TRUE FALSE

相关问题