Vergleich von grep() mit grepl() in R: Was ist der Unterschied?

Von Fabian
Kategorie: R
Tags: Operationen
Lesezeit: 2 Minuten

Zwei Funktionen, die in R häufig verwechselt werden, sind grep() und grepl(). Mit beiden Funktionen können Sie sehen, ob ein bestimmtes Muster in einer Zeichenfolge vorhanden ist, sie liefern jedoch unterschiedliche Ergebnisse:

  • grepl() gibt TRUE zurück, wenn ein Muster in einer Zeichenfolge vorhanden ist.
  • grep() gibt einen Vektor von Indizes der Zeichenfolgen zurück, die das Muster enthalten.

Das folgende Beispiel veranschaulicht diesen Unterschied:

#Erstellen Sie einen Datenvektor
data <- c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center')

grep('Guard', data)
[1] 1 2

grepl('Guard', data) 
[1]  TRUE  TRUE FALSE FALSE FALSE

Die folgenden Beispiele zeigen, wann Sie eine dieser Funktionen über die andere verwenden möchten.

Wann man grepl() benutzt

1. Filtern von Zeilen, die eine bestimmte Zeichenfolge enthalten

Eine der häufigsten Anwendungen von grepl() ist das Filtern von Zeilen in einem Dataframe, die eine bestimmte Zeichenfolge enthalten:

library(dplyr)

#Dataframe erstellen
df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'),
                 points = c(12, 15, 19, 22, 32),
                 rebounds = c(5, 7, 7, 12, 11))

#Filtern von Zeilen, die die Zeichenfolge 'Guard' in der Player-Spalte enthalten
df %>% filter(grepl('Guard', player))

   player points rebounds
1 P Guard     12        5
2 S Guard     15        7

Wann man grep verwendet()

1. Wählen Sie Spalten aus, die eine bestimmte Zeichenfolge enthalten

Mit grep() können Sie Spalten in einem Dataframe auswählen, die eine bestimmte Zeichenfolge enthalten:

library(dplyr)

#Dataframe erstellen
df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'),
                 points = c(12, 15, 19, 22, 32),
                 rebounds = c(5, 7, 7, 12, 11))

#Wählen Sie Spalten aus, deren Name die Zeichenfolge 'p' enthält
df %>% select(grep('p', colnames(df)))

     player points
1   P Guard     12
2   S Guard     15
3 S Forward     19
4 P Forward     22
5    Center     32

2. Zählen Sie die Anzahl der Zeilen, die eine bestimmte Zeichenfolge enthalten

Mit grep() können Sie die Anzahl der Zeilen in einem Dataframe zählen, die eine bestimmte Zeichenfolge enthalten:

#Dataframe erstellen
df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'),
                 points = c(12, 15, 19, 22, 32),
                 rebounds = c(5, 7, 7, 12, 11))

#Zählen Sie, wie viele Zeilen die Zeichenfolge 'Guard' in der Player-Spalte enthalten
length(grep('Guard', df$player))

[1] 2

Weitere R-Tutorials finden Sie hier.

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: