Zugriff auf Listenelemente
Teil des Abschnitts Grundlagen der R-Journey von Coddy — Lektion 72 von 78.
Listen verwenden eine andere Syntax für den Zugriff auf Elemente im Vergleich zu Vektoren. Der Hauptunterschied liegt zwischen einfachen Klammern [ ] und doppelten Klammern [[ ]].
Doppelte eckige Klammern extrahieren das tatsächliche Element aus der Liste:
my_list <- list(42, "hello", TRUE)
print(my_list[[1]])Ausgabe:
[1] 42Einfache eckige Klammern geben eine Teilliste zurück, die das Element enthält, nicht das Element selbst:
my_list <- list(42, "hello", TRUE)
print(my_list[1])Ausgabe:
[[1]]
[1] 42Dieser Unterschied ist wichtig, wenn Sie mit dem tatsächlichen Wert arbeiten möchten. Wenn ein Listenelement ein Vektor ist, ermöglichen Ihnen doppelte Klammern den direkten Zugriff darauf und die anschließende Verwendung der Vektorindizierung:
my_list <- list(c(10, 20, 30), "text")
print(my_list[[1]][2])Ausgabe:
[1] 20Hier ruft my_list[[1]] den Vektor ab, und [2] greift auf sein zweites Element zu. Denken Sie daran: Verwenden Sie [[ ]], wenn Sie den tatsächlichen Inhalt benötigen, und [ ], wenn Sie eine kleinere Liste möchten.
Aufgabe
EinfachSie erhalten zwei Eingabezeilen:
- Drei durch Kommas getrennte Werte unterschiedlicher Typen (z. B.
100,hello,TRUE) - Eine durch Kommas getrennte Liste von Zahlen, die einen Vektor darstellen, der als viertes Element gespeichert werden soll (z. B.
5,10,15,20)
Führen Sie die folgenden Operationen aus:
- Erstellen Sie eine Liste mit vier Elementen: dem numerischen Wert, dem Text, dem logischen Wert und dem Vektor aus Zahlen
- Verwenden Sie doppelte Klammern, um das zweite Element (den Textwert) zu extrahieren und auszugeben
- Verwenden Sie einfache Klammern, um das dritte Element zu extrahieren und das Ergebnis auszugeben (beachten Sie den Unterschied im Ausgabeformat)
- Greifen Sie mit doppelten Klammern auf den im vierten Element gespeicherten Vektor zu, extrahieren Sie dann dessen dritten Wert mittels Vektor-Indizierung und geben Sie ihn aus
- Geben Sie die Summe aller Zahlen im vierten Element aus (greifen Sie mit doppelten Klammern auf den Vektor zu und verwenden Sie
sum())
Wenn die Eingaben beispielsweise wie folgt lauten:
42,world,FALSE
8,16,24,32,40Sollte die Ausgabe wie folgt aussehen:
[1] "world"
[[1]]
[1] FALSE
[1] 24
[1] 120Erklärung:
my_list[[2]]extrahiert den tatsächlichen Textwert: "world"my_list[3]gibt eine Unterliste zurück, die FALSE enthält (beachten Sie das[[1]]in der Ausgabe)my_list[[4]][3]greift auf den Vektor zu und holt dann dessen drittes Element: 24sum(my_list[[4]])berechnet 8+16+24+32+40 = 120
Spickzettel
Listen verwenden unterschiedliche Klammer-Syntax für den Zugriff auf Elemente:
Doppelte Klammern [[ ]] extrahieren das tatsächliche Element:
my_list <- list(42, "hello", TRUE)
print(my_list[[1]]) # Ausgabe: [1] 42Einfache Klammern [ ] geben eine Unterliste zurück, die das Element enthält:
my_list <- list(42, "hello", TRUE)
print(my_list[1]) # Ausgabe: [[1]] [1] 42Zugriff auf verschachtelte Elemente: Verwenden Sie doppelte Klammern, um einen Vektor aus einer Liste zu extrahieren, und verwenden Sie dann die Vektor-Indizierung:
my_list <- list(c(10, 20, 30), "text")
print(my_list[[1]][2]) # Ausgabe: [1] 20Verwenden Sie [[ ]], wenn Sie den tatsächlichen Inhalt benötigen, und [ ], wenn Sie eine kleinere Liste möchten.
Probier es selbst
# Eingabe lesen
con <- file("stdin", "r")
input1 <- suppressWarnings(readLines(con, n = 1)) # Erste Zeile: drei durch Komma getrennte Werte
input2 <- suppressWarnings(readLines(con, n = 1)) # Zweite Zeile: durch Komma getrennte Zahlen für Vektor
close(con)
# Die erste Eingabezeile in separate Werte aufteilen
values <- strsplit(input1, ",")[[1]]
numeric_val <- as.numeric(values[1])
text_val <- values[2]
logical_val <- as.logical(values[3])
# Die zweite Eingabezeile in einen numerischen Vektor umwandeln
vector_val <- as.numeric(strsplit(input2, ",")[[1]])
# TODO: Schreiben Sie Ihren Code unten
# 1. Erstellen Sie eine Liste mit vier Elementen: numeric_val, text_val, logical_val und vector_val
# 2. Verwenden Sie doppelte Klammern [[ ]], um das zweite Element zu extrahieren und auszugeben
# 3. Verwenden Sie einfache Klammern [ ], um das dritte Element zu extrahieren und auszugeben
# 4. Greifen Sie mit doppelten Klammern auf das vierte Element zu und extrahieren Sie dessen dritten Wert
# 5. Geben Sie die Summe aller Zahlen im vierten Element ausDiese 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 Eingabe11Vektoren
Vektoren mit c() erstellenZugriff auf VektorelementeVektoren modifizierenVektoroperationenWiederholung – Preis-VektorWiederholung – Umgekehrter VektorBenannte Vektoren14Listen in R
Listen erstellenZugriff auf ListenelementeListen modifizierenBenannte ListenZusammenfassung - Produktliste3Operatoren 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