Character Suche mittels grep

Wie erweitere ich R um eigene Funktionen oder Pakete? Welches Paket ist passend für meine Fragestellung?

Moderatoren: EDi, jogo

Antworten
gming11
Beiträge: 22
Registriert: Do Feb 25, 2021 10:37 am

Character Suche mittels grep

Beitrag von gming11 »

Hallo,

ich will anhand eines Textes suchen wie oft ein bestimmtes Wort vorkommt. Ich habe dafür den Text in characters aufgespaltet und dachte die Funktion „grep“ wäre sinnvoll.

Anbei mal ein Pseudocode:

Code: Alles auswählen

Test1 <- „Ich komm leider nicht weiter bei dieser Wortsuche, darum bitte ich dich"

Test1A <- strsplit(Test1, " ")

Test1
Test1A

# Ziel: Ich will wissen, wie oft „ich" vorkommt. Im Beispiel wäre es 2x rein und 2x mal unrein durch „nicht“ und „dich“.

grep("euro", Test1A)
Liebe Grüße
bigben
Beiträge: 2381
Registriert: Mi Okt 12, 2016 9:09 am

Re: Character Suche mittels grep

Beitrag von bigben »

Hallo!

Hilft das hier?

Code: Alles auswählen

Test1 <- "Ich komm leider nicht weiter bei dieser Wortsuche, darum bitte ich dich"
gregexpr("ich", Test1) # findet "ich" an Stelle 18, 64 und 69
gregexpr("ich", tolower(Test1)) # findet auch "Ich" an Stelle 1
sinnvollerweise vielleicht in eine Funktion verpacken:

Code: Alles auswählen

wie_oft <- function(pattern, String)
    length(unlist(gregexpr(pattern, tolower(String))))

wie_oft("ich", "Ich kann Dir nur sagen, dass mich dünkt, das käme 2x vor")
Und noch besser, die Funktion irgendwo gut dokumentieren. Als Alternative zu tolower hat gregexpr auch ein Argument ignore.case

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
gming11
Beiträge: 22
Registriert: Do Feb 25, 2021 10:37 am

Re: Character Suche mittels grep

Beitrag von gming11 »

Danke ja sowas habe ich auch schon probiert. Mir ging es darum eine Möglichkeit zufinden, zu sehen wie oft das Wort in reiner Form vorkommt ergo „ich“ und wie oft in unreiner Form z.b „dich“ und das dann auch so ausgegeben wird, welche Charakters gefunden werden.

Danke für die Funktion ,das geht schon in die Richtung!
bigben
Beiträge: 2381
Registriert: Mi Okt 12, 2016 9:09 am

Re: Character Suche mittels grep

Beitrag von bigben »

Naja, wenn gregexpr Dir sowohl zurückgibt, wo genau der Treffer ist und wie lang der Treffer ist, dann kannst Du Dir zur Not was programmieren um zu schauen, ob davor und dahinter ein Leerzeichen steht. Oder Du versuchst Dich an schlaueren regex. Ganz banal mal eine regex die nur solche ich finden, vor und hinter denen ein Space steht

Code: Alles auswählen

Test1 <- "Ich komm leider nicht weiter bei dieser Wortsuche, darum bitte ich dich"
gregexpr("\ ich\ ", tolower(Test1)) # findet nur das 'ich' an Stelle 63
Das kann so nicht bleiben, es müssen ja wahrscheinlich auch Satzzeichen anstelle von Leerzeichen erkannt werden. In Regex bin ich wirklich nicht gut, aber da sollte sich bedarfsgerecht was stricken lassen.

LG,
Bernhard

PS: Haben Dir Die Antworten zu den SChulnotenverteilungen eigentlich geholfen? Und die zu dem Histogramm? Und der zum Barplot von zwei Variablen?
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten