检测 R 中字符串中子字符串的位置

Detecting location of substring within string in R

考虑以下字符串:

"NIKE STORE COVENT GARDEN"

假设我们试图检测哪个品牌与以下向量相匹配:

brands <- c("ADIDAS", "NIKE", "PUMA", "COVENT", "CONVERSE")

下面是我对结果输出所做的操作:

library(stringr)
> brands[str_detect("NIKE STORE COVENT GARDEN", brands)]
[1] "COVENT"    "NIKE"

很明显这里的品牌是"NIKE",而且我知道它一直位于位置之前。有什么方法可以定义一个规则,在我检测到多个品牌的情况下,我 select 是字符串中较早出现的品牌?

注意:在上面的示例中,我们方便地将品牌名称显示在字符串的开头。然而,有时我们会遇到这样的情况,即我们正在考虑的字符串的形式为“0123 NIKE STORE COVENT GARDEN”

您可以考虑使用 str_locate 而不是 str_detect。怎么样:

brands[which.min(str_locate("NIKE STORE COVENT GARDEN", brands)[,1])]