R:查找包含多个字符串匹配的向量元素

R:查找包含多个字符串匹配的向量元素,r,regex,R,Regex,我想找到一个向量(字符串)的元素,它包含另一个向量指定的所有字符串。比如说, x <- c("xxxabcxdxexfxx", "xxaxbcdexx", "xaxxxbc") a <- c("a", "b", "c", "d", "e", "f") 或 或 或 或 或 或 使用gregexpr: lengths(gregexpr(pattern = paste(a, collapse = "|"), text = x)) == length(a) # [1] TRUE FALS

我想找到一个向量(字符串)的元素,它包含另一个向量指定的所有字符串。比如说,

x <- c("xxxabcxdxexfxx", "xxaxbcdexx", "xaxxxbc")
a <- c("a", "b", "c", "d", "e", "f")


使用
gregexpr

lengths(gregexpr(pattern = paste(a, collapse = "|"), text = x)) == length(a)
# [1]  TRUE FALSE FALSE

使用
gregexpr

lengths(gregexpr(pattern = paste(a, collapse = "|"), text = x)) == length(a)
# [1]  TRUE FALSE FALSE
另一个:

sapply(strsplit(x,""), function(y) all(a %in% y))
另一个:

sapply(strsplit(x,""), function(y) all(a %in% y))

还是最短的;-)还是最短的;-)在这种情况下,这是可行的,但我猜如果我要查找的字符串长度超过一个字符,它将不起作用,对吗?这是真的,在那种情况下,使用
grep
就像在@d.b和@Henrik的解决方案中一样,在这种情况下更有效,但我猜如果我要查找的字符串长度超过一个字符,那么它就不起作用了,对吗?没错,在那种情况下,使用
grep
就像@d.b和@Henrik的解决方案一样更有意义
lengths(sapply(strsplit(x,""), setdiff, x = a)) == 0
#[1]  TRUE FALSE FALSE
lengths(gregexpr(pattern = paste(a, collapse = "|"), text = x)) == length(a)
# [1]  TRUE FALSE FALSE
sapply(strsplit(x,""), function(y) all(a %in% y))