如何在grepl中使用多个关键字
How to use multiple keywords in grepl
这是一个字符串类型的向量:
a<-c("Recherche impliquant la personne humaine (RIPH) Médicaments 3",
"Recherche impliquant la personne humaine (RIPH) Hors Produits de santé 3",
"Recherche impliquant la personne humaine (RIPH) dispositif médical 1")
我想识别包含某些关键字的所有元素:
我首先识别所有包含单词“Recherche”的元素
grepl("recherche",a,ignore.case = TRUE)
[1] TRUE TRUE TRUE
现在我只想识别同时包含所有这些关键字的元素:
c("recherche", "impliquant", "personne", "humaine", "3")
结果一定是
[1] TRUE TRUE FALSE
我试过这个:
grepl(c("Recherche,impliquant , personne, humaine, 3"),a)
但它没有用,因为输出是:
FALSE FALSE FALSE
您可以使用多个前瞻 (?=...)
来做到这一点,其中每个前瞻断言关键字字符串中的任何位置都存在; (?i)
用于使匹配不区分大小写:
grep("(?i)(?=.*recherche.*)(?=.*impliquant.*)(?=.*personne.*)(?=.*humaine.*)(?=.*3.*).*",
a,
value = TRUE,
perl = TRUE)
[1] "Recherche impliquant la personne humaine (RIPH) Médicaments 3"
[2] "Recherche impliquant la personne humaine (RIPH) Hors Produits de santé 3"
这个方法显然也适用于grepl
;只需省略 `value = TRUE:
grepl("(?i)(?=.*recherche.*)(?=.*impliquant.*)(?=.*personne.*)(?=.*humaine.*)(?=.*3.*).*",
a,
perl = TRUE)
[1] TRUE TRUE FALSE
这是一个字符串类型的向量:
a<-c("Recherche impliquant la personne humaine (RIPH) Médicaments 3",
"Recherche impliquant la personne humaine (RIPH) Hors Produits de santé 3",
"Recherche impliquant la personne humaine (RIPH) dispositif médical 1")
我想识别包含某些关键字的所有元素:
我首先识别所有包含单词“Recherche”的元素
grepl("recherche",a,ignore.case = TRUE)
[1] TRUE TRUE TRUE
现在我只想识别同时包含所有这些关键字的元素:
c("recherche", "impliquant", "personne", "humaine", "3")
结果一定是
[1] TRUE TRUE FALSE
我试过这个:
grepl(c("Recherche,impliquant , personne, humaine, 3"),a)
但它没有用,因为输出是:
FALSE FALSE FALSE
您可以使用多个前瞻 (?=...)
来做到这一点,其中每个前瞻断言关键字字符串中的任何位置都存在; (?i)
用于使匹配不区分大小写:
grep("(?i)(?=.*recherche.*)(?=.*impliquant.*)(?=.*personne.*)(?=.*humaine.*)(?=.*3.*).*",
a,
value = TRUE,
perl = TRUE)
[1] "Recherche impliquant la personne humaine (RIPH) Médicaments 3"
[2] "Recherche impliquant la personne humaine (RIPH) Hors Produits de santé 3"
这个方法显然也适用于grepl
;只需省略 `value = TRUE:
grepl("(?i)(?=.*recherche.*)(?=.*impliquant.*)(?=.*personne.*)(?=.*humaine.*)(?=.*3.*).*",
a,
perl = TRUE)
[1] TRUE TRUE FALSE