Entfernen das erste Zeichen aus einer Zeichenfolge in R

Jesse John 30 Januar 2023
  1. Techniken zum Entfernen des ersten Zeichens aus einer Zeichenfolge
  2. Verwendung der Funktion substr()
  3. Verwendung von die Funktion sub() mit einem regulären Ausdruck
  4. Das stringr-Paket verwenden
  5. Hilfe bekommen
  6. Fazit
Entfernen das erste Zeichen aus einer Zeichenfolge in R

R ist als Programmierumgebung für statistische Analysen bekannt. Es bedeutet, Zahlen zu analysieren, aber bei Statistiken geht es nicht nur um Zahlen. Möglicherweise müssen wir die Instanzen eines Wortes zählen oder das erste Zeichen aus einer Zeichenfolge entfernen.

R bietet viele Funktionen zum Analysieren und Bearbeiten von Zeichenketten. Während einige Funktionen in Basis-R integriert sind, sind weitere über Pakete verfügbar.

Dieser Artikel konzentriert sich auf drei Techniken, um das erste Zeichen aus einer Zeichenfolge zu entfernen.

Bevor Sie in die Techniken eintauchen, ist es wichtig, diese beiden Punkte zu beachten.

  1. In R beginnt die Indizierung von Elementen von Vektoren mit 1 und nicht mit 0. Im Gegensatz zu den meisten Programmiersprachen ist es wie die Indizierung von Vektoren und Matrizen in der Mathematik, und der letzte Bereichsindex ist im Bereich enthalten.
  2. Alle Beispielcodes in diesem Artikel verwenden gültige Werte. Es hilft, den Fokus des Artikels auf dem erklärten Hauptkonzept zu halten.

Techniken zum Entfernen des ersten Zeichens aus einer Zeichenfolge

Wir werden drei Techniken untersuchen, um das erste Zeichen aus einer Zeichenfolge oder einem Vektor von Zeichenketten zu entfernen.

  1. Basis-R-Funktion substr().
  2. Basis-R-Funktion sub() mit einem regulären Ausdruck.
  3. Die Funktion str_sub() aus dem Paket stringr.

Wir werden jede Technik demonstrieren, um das Verständnis sowohl mit einer einzelnen Zeichenfolge als auch mit einem Vektor von Zeichenketten zu erleichtern.

Wir werden das Wort Dictionary als unsere Beispielzeichenfolge verwenden. Wir verwenden die Combine-Funktion von R, c(), um einen Vektor aus drei Strings zu erstellen.

Die Wörter, aus denen unser Vektor besteht, sind Dictionary, Thesaurus und Tagebuch. Der folgende Code erstellt den Vektor.

Beispielcode:

myVector = c('dictionary', 'thesaurus', 'diary')

Ausgabe:

> myVector = c('dictionary', 'thesaurus', 'diary')

Verwendung der Funktion substr()

Die erste Technik demonstriert die Funktion substr() der Basis R, um das erste Zeichen aus einer Zeichenfolge zu entfernen. Die wichtigsten Punkte zur Verwendung dieser Funktion sind wie folgt.

  • Die Funktion substr() extrahiert einen Teil eines Strings.
  • Es dauert drei Argumente.
  • Das erste Argument ist die Textzeichenfolge. In der R-Terminologie ist ein String ein Zeichenvektor, und jedes seiner Zeichen hat einen Positionsindex.
  • Das zweite Argument ist der Index des Zeichens, um den Teilstring zu beginnen. Der Index des ersten Zeichens ist 1.
  • Das dritte Argument ist der Indexvektor des Zeichens zum Beenden der Teilzeichenfolge. Der Index des letzten Zeichens entspricht der Länge der Zeichenkette.

Der folgende Beispielcode entfernt das erste Zeichen der Zeichenfolge, da wir die Teilzeichenfolge bei Index zwei beginnen und die Teilzeichenfolge an der Indexposition des letzten Zeichens beenden.

Beispielcode:

substr('dictionary', 2,10)

Ausgabe:

> substr('dictionary', 2,10)
[1] "ictionary"

In den meisten praktischen Fällen werden wir nicht mit einer einzelnen Saite arbeiten. Wir werden einen Vektor von Strings haben und wir müssen das erste Zeichen von jedem String im Vektor entfernen.

Um die Funktion substr() an einem Vektor von Strings zu demonstrieren, führen wir eine neue Funktion nchar() von der Basis R aus ein.

Die Funktion nchar() liefert uns die Anzahl der Zeichen jedes Elements eines String-Vektors. Warum brauchen wir diese Funktion? Um einen Teilstring mit substr() zu extrahieren, müssen wir den Index des Zeichens übergeben, an dem der Teilstring gestoppt werden soll.

In unserem vorherigen Beispiel wollten wir nur das erste Zeichen entfernen; Wir haben zu diesem Zweck die Indexposition des letzten Zeichens der Zeichenfolge verwendet. In unserem Beispiel eines einzelnen Wortes haben wir einen bestimmten Zahlenwert für die Position des letzten Zeichens angegeben.

Wenn wir einen Vektor von Strings unterschiedlicher Länge haben, brauchen wir eine allgemeine Methode, um die Indexposition des letzten Zeichens jedes Strings anzugeben. Die Funktion nchar() ermöglicht uns dies.

Zum Beispiel ergibt nchar('dictionary') 10; es ist die Anzahl der Zeichen in der Zeichenfolge Dictionary. Und da die Indizierung in R bei 1 beginnt, ist die Indexposition des letzten Zeichens dieser Zeichenfolge 10.

Wir verwenden weiterhin die gleiche substr()-Funktion, um einen Vektor von Strings zu verarbeiten. Beachten Sie jedoch zwei Hauptunterschiede in diesem Fall.

  • Das erste Argument von substr() ist jetzt ein Vektor von Strings. (Es ist ein Vektor von Zeichenvektoren.)
  • Da substr() auf jedes Vektorelement angewendet wird, übergibt nchar() die Anzahl der Zeichen in diesem Element. Im Gegensatz zu prozeduralen Programmiersprachen ist es unnötig, eine Schleife zu schreiben, um jedes Vektorelement zu durchlaufen.

Der folgende Code entfernt das erste Zeichen aus jedem Vektorelement.

Beispielcode:

substr(myVector, 2, nchar(myVector))

Ausgabe:

> substr(myVector, 2, nchar(myVector))
[1] "ictionary" "hesaurus"  "iary"

Verwendung von die Funktion sub() mit einem regulären Ausdruck

Reguläre Ausdrücke beziehen sich auf ein sehr ausgeklügeltes String-Muster-Matching-System. Es ist ein leistungsfähiges Werkzeug zum Identifizieren von Mustern in Zeichenketten.

Eine allgemeine Darstellung regulärer Ausdrücke würde den Rahmen dieses Artikels sprengen; mehrere Bücher wurden zu diesem Thema geschrieben. Da wir jedoch einen regulären Ausdruck mit der Funktion sub() verwenden müssen, werden nur die wesentlichen Merkmale eingeführt.

  • Der Punkt oder Punkt entspricht jedem Zeichen, einer einzelnen Instanz eines beliebigen Zeichens.
  • Das Caretzeichen, ^ am Anfang, entspricht einem Muster am Anfang einer Zeichenkette.

Mit diesen beiden Zeichen erstellen wir die folgenden zwei regulären Ausdrucksmuster:

  1. Das Muster (.) entspricht einem beliebigen Zeichen.
  2. Das Muster ^ entspricht einem beliebigen Zeichen am Anfang der Zeichenfolge.

Die sub()-Funktion der Basis R ist eine Mustervergleichs- und Ersetzungsfunktion, bei der wir einen regulären Ausdruck verwenden, um das erste Zeichen aus einer Zeichenfolge zu entfernen.

Die wichtigsten Punkte zur Verwendung dieser Funktion sind wie folgt:

  1. Die Funktion hat die Form sub('searchpattern', 'replacement', 'string').
  2. Das erste Argument ist das Muster, nach dem wir suchen.
  3. Die zweite ist die Zeichenfolge, die das erste Vorkommen des Suchmusters ersetzt, sobald es gefunden wurde.
  4. Die dritte ist die Zeichenfolge, in der wir nach dem Muster suchen und das Muster ersetzen.
  5. Standardmäßig unterscheidet diese Funktion zwischen Groß- und Kleinschreibung.
  6. Diese Funktion vergleicht und ersetzt nur die erste Instanz des Suchmusters.

Der folgende Code veranschaulicht die Funktion sub() mit dem Punkt als regulärem Ausdruck (das Suchmuster). Das erste Zeichen, das die erste Übereinstimmung ist, wird durch A ersetzt.

Beispielcode:

sub('.','A','dictionary')

Ausgabe:

> sub('.','A','dictionary')
[1] "Aictionary"

Unsere Hauptaufgabe besteht darin, das erste Zeichen aus einer Zeichenfolge zu entfernen, anstatt es zu ersetzen.

Um das erste Zeichen der Zeichenkette mit dieser Technik zu entfernen, müssen wir eine leere Zeichenkette, '', als zweites Argument verwenden. Sehen Sie sich den Code an.

Beispielcode:

sub('.','','dictionary')

Ausgabe:

> sub('.','','dictionary')
[1] "ictionary"

Das nächste Beispiel demonstriert die Funktion sub() mit dem bereits erstellten Vektor von Strings. Dieser Code entfernt das erste Zeichen aus jedem Element des Vektors.

Beispielcode:

sub('.','', myVector)

Ausgabe:

> sub('.','', myVector)
[1] "ictionary" "hesaurus"  "iary"

Bevor Sie mit der nächsten Technik fortfahren, ist ein Wort der Vorsicht angebracht. Base R hat eine weitere Mustervergleichs- und Ersetzungsfunktion, gsub().

gsub() stimmt mit allen Instanzen des Suchmusters überein und ersetzt sie, im Gegensatz zur Funktion sub(), die mit der ersten Instanz des Suchmusters übereinstimmt und sie ersetzt. Sie haben vielleicht bemerkt, dass dieser Abschnitt zwar zwei reguläre Ausdrücke einführt, der Beispielcode jedoch nur einen verwendet.

Der Grund ist, dass bei der Funktion sub() nur der Punkt ausreicht, um ein beliebiges erstes Zeichen zu finden, da er nur auf die erste Instanz des Suchmusters passt. gsub() verhält sich anders; Der Punkt passt zu jedem Zeichen.

Beispielcode:

gsub('.','A','dictionary')

Ausgabe:

> gsub('.','A','dictionary')
[1] "AAAAAAAAAA"

Wir stellen fest, dass gsub() jedes Zeichen durch die Ersetzungszeichenfolge ersetzt hat, in diesem Fall 'A'. Um zu erzwingen, dass gsub() nur am Anfang des Strings mit dem Suchmuster übereinstimmt, müssen wir dem Punkt ein Caret voranstellen, wie im folgenden Beispiel.

Beispielcode:

gsub('^.','A','dictionary')

Ausgabe:

> gsub('^.','A','dictionary')
[1] "Aictionary"

Für die Aufgabe, nur das erste Zeichen aus einer Zeichenfolge oder einem Vektor von Zeichenketten zu entfernen, ist die Funktion sub() eine einfachere Option im Vergleich zu ihrem engen Gegenstück gsub().

Das stringr-Paket verwenden

Das Paket stringr stellt die Funktion str_sub() bereit, um das erste Zeichen aus einem String zu entfernen. Im Gegensatz zur Basis-R-Funktion substr() benötigen wir keine weitere Funktion wie nchar(), um die Indexposition des letzten Zeichens zu erhalten, wenn wir die Funktion str_sub() auf einen Vektor von Strings anwenden.

Da das Paket stringr diese Funktion jedoch bereitstellt, müssen Benutzer dieses Paket zuerst installieren (einmalige Aufgabe) und laden, bevor sie es verwenden (in jeder Sitzung).

Die wichtigsten Punkte zur Verwendung der Funktion str_sub() sind wie folgt:

  1. Die Funktion nimmt drei Argumente entgegen.
  2. Das erste Argument ist die Zeichenfolge oder der Vektor von Zeichenketten.
  3. Das zweite Argument ist die Indexposition, ab der der Teilstring beginnen soll. Um das erste Zeichen zu entfernen, müssen wir bei Indexposition 2 beginnen.
  4. Das dritte Argument ist die Indexposition, an der der Teilstring enden soll. Um alle Zeichen bis zum Ende des Strings zu behalten, müssen wir ihm die Indexposition des letzten Zeichens geben, die -1 ist. Das macht diese Funktion besonders nützlich.

Bei Verwendung der Funktion substr() der Basis R haben wir die Indexposition des letzten Zeichens jeder Zeichenfolge mit der Funktion nchar() berechnet. Die Funktion str_sub() gibt jedoch Indexpositionen vom Ende eines Strings aus mit negativen Ganzzahlen an.

Die Indexposition des letzten Zeichens ist -1, die Indexposition des vorletzten Zeichens ist -2 und so weiter. Diese Funktion ermöglicht es uns, unseren Teilstring allein mit dieser Funktion anzugeben.

Zum Beispiel beginnt str_sub('thesaurus',2,-1) mit dem Extrahieren (Behalten) des Teilstrings ab Indexposition 2 des ursprünglichen Strings, also ab dem Buchstaben h, und behält alle Zeichen bis Indexposition -1 bei der ursprüngliche String, also das letzte Zeichen, s. Es gibt also den String hesaurus zurück.

Dieser Code veranschaulicht die Verwendung der Funktion mit der einzelnen Zeichenfolge Dictionary und dem von uns erstellten Vektor von Zeichenketten.

Beispielcode:

# Install the stringr package using the install.packages() function.
# This is a one-time task.
install.packages("stringr")

# Load the stringr package in each R session using the library() function.
library(stringr)

# Use of the str_sub() function on a string -- a character vector.
str_sub('dictionary', 2,-1)

# Use of the str_sub() function on a vector of strings.
str_sub(myVector, 2,-1) # Removes the first character.

Ausgabe (nach Installation und Laden des Pakets):

> # Use of the str_sub() function on a string -- a character vector.
> str_sub('dictionary', 2,-1)
[1] "ictionary"
>
> # Use of the str_sub() function on a vector of strings.
> str_sub(myVector, 2,-1) # Removes the first character.
[1] "ictionary" "hesaurus"  "iary"

Hilfe bekommen

RStudio macht es bequem, mehr Informationen zu jeder Funktion oder jedem Befehl zu erhalten.

Klicken Sie auf Hilfe > R-Hilfe, um den Hilfebereich im Fenster Dateien / Plots / Pakete / Hilfe / Viewer unten rechts auf der RStudio-Oberfläche aufzurufen.

Suchen Sie mithilfe des Suchfelds oben auf dieser Seite nach einer der in diesem Artikel erwähnten Funktionen. Geben Sie die Klammern nicht nach dem Funktionsnamen in das Suchfeld ein.

Durch Klicken auf Hilfe > R-Hilfe durchsuchen wird der Cursor in das Suchfeld dieser Seite platziert.

Fazit

Es stehen mehrere Techniken zur Verfügung, um das erste Zeichen aus einer Zeichenfolge zu entfernen. Die Basis-R-Funktion substr() ist leicht verfügbar, benötigt aber eine andere Basis-R-Funktion, die nchar()-Funktion, für einen Vektor von Strings.

Die Funktion sub() ist mächtig, aber all ihre Kraft und Komplexität erfordern nicht die einfache Aufgabe, das erste Zeichen der Zeichenfolge zu entfernen. Die Funktion str_sub() ist praktisch, erfordert aber die Installation und das Laden des Pakets stringr.

Jede dieser Techniken liefert das erwartete Ergebnis. Die Wahl liegt beim Benutzer.

Autor: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.

Verwandter Artikel - R String