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))