簡體   English   中英

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

[英]R: Find vector elements containing multiple string matches

我想找到一個向量(字符串)的元素,其中包含另一個向量指定的所有字符串。 例如,

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

我想找到的元素x包含在所有的字符串a ,因此要獲得

[1] TRUE FALSE FALSE
sapply(x, function(string) all(Vectorize(grepl)(pattern = a, x = string)))
#xxxabcxdxexfxx     xxaxbcdexx        xaxxxbc 
#          TRUE          FALSE          FALSE

要么

rowSums(sapply(a, function(P) grepl(P, x))) == length(a)
#[1]  TRUE FALSE FALSE

要么

grepl(pattern = paste(sort(a), collapse = ""),
      x = sapply(strsplit(x, ""),
                 function(x) paste(sort(x), collapse = "")))
#[1]  TRUE FALSE FALSE

要么

lengths(sapply(strsplit(x,""), setdiff, x = a)) == 0
#[1]  TRUE FALSE FALSE

另一個:

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

使用gregexpr

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM