grepl & grep (2)
Du kannst das Caret-Zeichen (^) und das Dollar-Zeichen ($) verwenden, um den Inhalt am Anfang bzw. Ende einer Zeichenkette abzugleichen. Das könnte uns einen Schritt näher an ein korrektes Muster bringen, mit dem wir nur die auf .edu endenden E-Mail-Adressen in unserer E-Mail-Liste finden. Es gibt aber noch mehr, was man hinzufügen kann, um das Muster zu verbessern:
@: Eine gültige E-Mail-Adresse muss dieses Zeichen enthalten..*: Gleicht jedes Zeichen (.) null Mal oder häufiger (*) ab. Sowohl der Punkt als auch das Sternchen sind Metazeichen. Du kannst sie verwenden, um beliebige Zeichen zwischen dem @-Zeichen und dem .edu-Teil einer E-Mail-Adresse abzugleichen.\\.edu$: Damit wird am Ende der Zeichenkette nach dem .edu-Teil der E-Mail-Adresse gesucht. Der\\-Teil maskiert den Punkt: So weiß R, dass du.als tatsächliches Zeichen verwenden willst.
Diese Übung ist Teil des Kurses
R für Fortgeschrittene
Anleitung zur Übung
- Nutze
grepl()mit dem komplexeren regulären Ausdruck, um einen logischen Vektor zurückzugeben. Gib das Ergebnis einfach aus. - Tu nun Ähnliches mit
grep(), um einen Vektor mit Indizes zu erstellen. Speichere das Ergebnis in der Variablehits. - Verwende erneut
emails[hits], um eine Teilmenge des Vektorsemailszu erstellen.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# The emails vector has already been defined for you
emails <- c("[email protected]", "[email protected]", "[email protected]",
"invalid.edu", "[email protected]", "[email protected]")
# Use grepl() to match for .edu addresses more robustly
# Use grep() to match for .edu addresses more robustly, save result to hits
# Subset emails using hits