Comment rechercher des mots individuels dans r

Lorsque vous travaillez avec du texte, souvent, vous pouvez résoudre les problèmes si vous êtes en mesure de trouver des mots ou des motifs à l'intérieur du texte. R rend ce facile à faire. Imaginez que vous avez une liste des États des États-Unis, et vous voulez savoir lequel de ces états contient le mot Nouveau.

Sommaire

Pour étudier ce problème, vous pouvez utiliser l'ensemble de données intégré states.names, qui contient - vous l'aurez deviné - les noms des États des États-Unis:

> Head (state.names) [1] "Alabama" "Alaska" "Arizona" [4] "Arkansas" "California" "Colorado"

D'une manière générale, vous pouvez trouver des chaînes dans le texte de deux façons:

  • Par la position: Par exemple, vous pouvez dire R pour obtenir trois lettres à partir de la position 5.

  • Par motif: Par exemple, vous pouvez dire R pour obtenir chaînes qui correspondent à un mot spécifique ou un modèle.




    Un modèle est un peu comme un joker. Dans certains jeux de cartes, vous pouvez utiliser la carte Joker pour représenter toute autre carte. De même, un motif en R peut contenir des mots ou certains symboles ayant une signification spéciale.

Recherche par position dans R

Si vous connaissez la position exacte d'un sous-texte à l'intérieur d'un élément de texte, vous utilisez le substr () fonction pour renvoyer la valeur. Pour extraire le sous-texte qui commence à la troisième position et arrête à la sixième position state.name, utiliser les éléments suivants:

> Tête (substr (state.name, start = 3, arrêt = 6)) [1] "abam" "Aska" "Izon" "kans" "LIFO" "lora"

Recherche par modèle dans R

Pour trouver des sous-chaînes, vous pouvez utiliser la grep () fonction, qui prend deux arguments essentiels:

  • motif: Le motif que vous voulez trouver.

  • X: Le vecteur de caractère que vous voulez rechercher.

Supposons que vous voulez trouver tous les Etats qui contiennent le motif Nouveau. Faire comme ceci:

> Grep ("Nouveau", state.name) [1] 29 30 31 32

Le résultat de grep () est un vecteur numérique avec les positions de chacun des éléments qui contiennent le motif d'adaptation. En d'autres termes, l'élément 29 state.name contient le mot Nouveau.

> State.name [29] New Hampshire

Ouf, cela a fonctionné! Mais en tapant dans la position de chaque texte correspondant va être beaucoup de travail. Heureusement, vous pouvez utiliser les résultats de grep () directement au sous-ensemble le vecteur d'origine:

> State.name [grep ("Nouveau", state.name)] [1] "New Hampshire" "New Jersey" [3] "New Mexico" "New York"

La grep () fonction est sensible à la casse - il ne correspond texte dans le même cas (majuscule ou minuscule) que votre modèle de recherche. Si vous recherchez pour le modèle "nouveau"En minuscules, les résultats de recherche sont vides:

> State.name [grep ("nouveau", state.name)] caractère (0)

» » » » Comment rechercher des mots individuels dans r