我有一个字符串列表,我分成一个列表和两个字符串,我想寻找
string <- c("ABC, BCD, DAB", "BCA, CDA, ABDA") s1 <- "AB" s2 <- "CD"
除以", ",我想看看在strsplit()创建的列表的每个元素中,我是否可以找到我要找的字符串。因此,结果应遵循以下逻辑:对于第一个字符串:TRUE,TRUE,TRUE --> TRUE对于第二个字符串:FALSE,TRUE,TRUE --> FALSE我可以使用dplyr吗?
", "
strsplit()
zc0qhyus1#
在这里使用dplyr并不是正确的工具。在base R中,它是一行程序:
dplyr
lapply(strsplit(string, ', '), \(x) all(grepl(paste(s1, s2, sep = '|'), x))) #> [[1]] #> [1] TRUE #> #> [[2]] #> [1] FALSE
mnemlml82#
以下是purrr解决方案:
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
2条答案
按热度按时间zc0qhyus1#
在这里使用
dplyr
并不是正确的工具。在base R中,它是一行程序:mnemlml82#
以下是
purrr
解决方案: