2017-07-23 1 views
-1

J'ai cet exemple de code grepl() qui différencie le nom masculin et féminin. Le code suivant est donné et cela fonctionne mais je suis incapable de comprendre comment cela fonctionne.Comprendre le fonctionnement de cette fonction grepl() dans R

name = c("Braund, Mr. Owen Harris", 
     "Cumings, Mrs. John Bradley (Florence Briggs Thayer)") 

grepl("\\(.*?\\)", name) 
# [1] FALSE TRUE 
+0

Je veux dire .. _N'ont-ils pas tous des doublons_ wicter? Juste les marquer tous les dups .. – sln

Répondre

0

La mise en correspondance est basée sur la présence de (, zéro ou plusieurs caractères (.*) qui le suit et suivie par une fermeture )). Ici, il suppose que les noms féminins ont les accolades. Nous pouvons également correspondre sur la base Mrs.

grepl("\\bMrs\\.", name) 
#[1] FALSE TRUE 
0

Votre code ne fait pas de distinction entre les noms masculins et féminins.

"\\(.*?\\)" est un regular expression. Il est un moyen puissant de la recherche de modèles dans les grands textes (comme CTRL + F)

grepl("\\(.*?\\)", name) recherches pour un élément names conforme à avoir un support d'ouverture (, suivi d'un certain nombre de caractères, suivi d'un crochet de fermeture ). Par conséquent, cette expression régulière et non distingue les noms masculins et féminins. Elle distingue les éléments (.. something something ..) et les éléments sans motif.