假设我有一个搜索字符串向量,以及一个可以包含多个匹配项的目标字符串。例如颜色:
$this->i = 0;
$this->startCacheClient()->pipeline(function($pipe) use($values, $jsonEncode, $keepAlive){
foreach($values as $key => $currentValue){
if($jsonEncode) {
$currentValue = gzcompress(json_encode($currentValue), -1);
}
$pipe->set($key, $currentValue);
$pipe->expire($key, $keepAlive);
$this->i++;
}
});
什么是获得矢量的最有效方式(" Black"," Green");即,目标字符串中搜索字符串子集的向量?
答案 0 :(得分:3)
我们可以使用Vectorize
向量化grepl
:
search_strings[Vectorize(grepl)(search_strings,target_string)]
# [1] "Black" "Green"
答案 1 :(得分:1)
我们也可以使用可以使用向量的str_match
。我们获得的vector
输出的NA为非匹配,我们将其移除is.na
library(stringr)
v1 <- str_match(target_string, search_strings)[,1]
v1
#[1] "Black" NA "Green"
v1[!is.na(v1)]
#[1] "Black" "Green"