我想在向量中找到“A1”和“A6”的精确匹配:
myfile=paste("A",c(1:10),sep="")
我使用了 stringr
包中的 str_detect
:
toMatch <- c("A1", "A6")
str_detect(myfile,fixed(paste(toMatch,collapse="|")))
但对于与“A10”的部分匹配它也会返回 TRUE。
还有其他可行的乐趣吗?
最佳答案
我们可以使用单词边界(\\b
)来避免不必要的部分匹配
str_detect(myfile,paste0("\\b(", paste(toMatch, collapse="|"), ")\\b"))
[1] TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
根据使用的元素,可以用%in%
来完成
myfile %in% toMatch
1] TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
关于R 多个模式的精确匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69258011/