Vektor-Slicing und Indizierung
Teil des Abschnitts Grundlagen der R-Journey von Coddy — Lektion 67 von 78.
Sie haben gelernt, wie man auf einzelne Elemente zugreift und durch Vektoren iteriert. Lassen Sie uns nun untersuchen, wie man mit Slicing mehrere Elemente gleichzeitig extrahiert. Diese Technik ermöglicht es Ihnen, eine Teilmenge eines Vektors in einer einzigen Operation zu erfassen.
Um mehrere Elemente zu extrahieren, übergeben Sie einen Vektor von Indizes innerhalb der eckigen Klammern:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[c(1, 3, 5)])Ausgabe:
[1] 10 30 50Sie können auch den Doppelpunkt-Operator verwenden, um einen Bereich aufeinanderfolgender Elemente auszuwählen:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[2:4])Ausgabe:
[1] 20 30 40Negative Indizes sind in R sehr mächtig. Sie schließen Elemente aus, anstatt sie auszuwählen:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[-2])Ausgabe:
[1] 10 30 40 50Sie können mehrere Elemente ausschließen, indem Sie einen Vektor mit negativen Indizes übergeben:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[-c(1, 5)])Ausgabe:
[1] 20 30 40Denken Sie daran: Sie können positive und negative Indizes nicht in derselben Auswahl mischen. R wird einen Fehler ausgeben, wenn Sie numbers[c(1, -2)] versuchen.
Aufgabe
EinfachSie erhalten zwei Eingabezeilen:
- Eine durch Kommas getrennte Liste von Zahlen (z. B.
100,200,300,400,500,600,700) - Zwei durch ein Komma getrennte Indizes, die einen auszuschließenden Bereich darstellen (z. B.
2,5)
Führen Sie die folgenden Operationen aus:
- Erstellen Sie einen numerischen Vektor aus den durch Kommas getrennten Zahlen
- Geben Sie die Elemente an den Positionen 1, 3 und 5 unter Verwendung eines Vektors von Indizes aus
- Geben Sie die Elemente von Position 2 bis Position 4 unter Verwendung des Doppelpunkt-Operators aus
- Geben Sie den Vektor aus, wobei das Element am ersten angegebenen Index ausgeschlossen wird (unter Verwendung negativer Indizierung)
- Geben Sie den Vektor aus, wobei die Elemente vom ersten bis zum zweiten Index ausgeschlossen werden (unter Verwendung negativer Indizierung mit einem Bereich)
Wenn die Eingaben zum Beispiel wie folgt lauten:
10,20,30,40,50,60,70
3,5Die Ausgabe sollte wie folgt aussehen:
[1] 10 30 50
[1] 20 30 40
[1] 10 20 40 50 60 70
[1] 10 20 60 70Erklärung:
- Elemente an den Positionen 1, 3, 5 sind: 10, 30, 50
- Elemente von Position 2 bis 4 sind: 20, 30, 40
- Das Ausschließen von Position 3 ergibt: 10, 20, 40, 50, 60, 70
- Das Ausschließen der Positionen 3 bis 5 ergibt: 10, 20, 60, 70
Probier es selbst
# Eingabe lesen
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
indices_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# Die durch Kommas getrennten Zahlen in einen numerischen Vektor parsen
numbers <- as.numeric(strsplit(numbers_input, ",")[[1]])
# Die beiden Indizes parsen
indices <- as.numeric(strsplit(indices_input, ",")[[1]])
idx1 <- indices[1]
idx2 <- indices[2]
# TODO: Schreibe deinen Code unten
# 1. Gib die Elemente an den Positionen 1, 3 und 5 unter Verwendung eines Vektors von Indizes aus
# 2. Gib die Elemente von Position 2 bis Position 4 unter Verwendung des Doppelpunkt-Operators aus
# 3. Gib den Vektor aus, wobei das Element bei idx1 ausgeschlossen wird (negative Indizierung)
# 4. Gib den Vektor aus, wobei die Elemente von idx1 bis idx2 ausgeschlossen werden (negative Indizierung mit Bereich)Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Operatoren Teil 2
Logische Operatoren (AND, OR)Logische Operatoren Teil 2 (NOT)Wiederholung – Einfache LogikVektorisierte Logik Teil 1Vektorisierte Logik Teil 27Rechnungs-Split-Rechner
WillkommensnachrichtBenutzereingaben abfragen10FizzBuzz mit einer Besonderheit
SpielübersichtDie FizzBuzz-Funktion13Vektoren für Fortgeschrittene
Vektor-Slicing und IndizierungLogische IndizierungVektorarithmetik & RecyclingDer %in%-Operator2Variablen und Datentypen
Numerischer DatentypGanzzahl-DatentypZeichen-DatentypLogischer DatentypDatentypen prüfenBenennungskonventionenFehlende Werte: NAZusammenfassung – Variablenerstellung5Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher TaschenrechnerVerschachteltes If - Else8Schleifen
For-SchleifeWhile-SchleifeBreakNext (Continue)Rückblick - FakultätSequenzgenerierung (seq, :)Verschachtelte SchleifenRückblick - Dynamische Eingabe3Operatoren Teil 1
Arithmetische OperatorenGanzzahlige Division und ModuloZuweisungsoperatorenWiederholung - Einfache MathematikVergleichsoperatoren6Grundlagen der Ein- und Ausgabe
Print-AusgabeCat zur AusgabeAusgabe mit VariablenEingabe lesen mit readline()Grundlagen der TypumwandlungWiederholung – AltersrechnerWiederholung – Wahr oder Falsch9Funktionen
Funktionen deklarierenFunktionsargumenteRückgabewerteWiederholung - Sigma-FunktionWiederholung - ValidierungsfunktionStandard-Parameterwerte