Listenelemente zugreifen
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
EinfachDu erhältst zwei Eingabezeilen:
- Drei durch Kommas getrennte Werte unterschiedlichen Typs (z. B.
100,hello,TRUE) - Eine durch Kommas getrennte Liste von Zahlen, die als viertes Element gespeichert werden soll (z. B.
5,10,15,20)
Führe die folgenden Operationen aus:
- Erstelle eine Liste mit vier Elementen: dem numerischen Wert, dem Text, dem logischen Wert und dem Vektor aus Zahlen
- Verwende doppelte eckige Klammern, um das zweite Element (den Textwert) zu extrahieren und auszugeben
- Verwende einfache eckige Klammern, um das dritte Element zu extrahieren und das Ergebnis auszugeben (beachte den Unterschied im Ausgabeformat)
- Greife mit doppelten eckigen Klammern auf den im vierten Element gespeicherten Vektor zu. Extrahiere anschließend mithilfe der Vektorindizierung seinen dritten Wert und gib ihn aus
- Gib die Summe aller Zahlen im vierten Element aus (greife mit doppelten eckigen Klammern auf den Vektor zu und verwende
sum())
Wenn die Eingaben beispielsweise folgendermaßen lauten:
42,world,FALSE
8,16,24,32,40Die Ausgabe sollte folgendermaßen 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 (beachte das[[1]]in der Ausgabe)my_list[[4]][3]greift auf den Vektor zu und ruft anschließend sein drittes Element ab: 24sum(my_list[[4]])berechnet 8+16+24+32+40 = 120
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 27Rechner zum Teilen der Rechnung
BegrüßungsnachrichtBenutzereingaben erfassen10FizzBuzz mit einer Wendung
SpielübersichtDie FizzBuzz-Funktion13Fortgeschrittene Vektoren
Vektor-Slicing und -IndizierungLogische IndizierungVektorarithmetik & RecyclingDer %in%-Operator2Variablen und Datentypen
Numerischer DatentypGanzzahliger DatentypZeichen-DatentypLogischer DatentypDatentypen überprüfenNamenskonventionenFehlende Werte: NAZusammenfassung – Variablen erstellen5Entscheidungen treffen
If-AnweisungIf - ElseWiederholung – Einfacher TaschenrechnerVerschachteltes If - Else8Schleifen
For-SchleifeWhile-SchleifeBreakNext (Continue)Wiederholung – FakultätSequenzgenerierung (seq, :)Verschachtelte SchleifenWiederholung – Dynamische Eingabe11Vektoren
Vektoren mit c() erstellenAuf Vektorelemente zugreifenVektoren ändernVektoroperationenZusammenfassung – PreisvektorZusammenfassung – Umgekehrter VektorBenannte Vektoren14Listen in R
Listen erstellenListenelemente zugreifenListen ändernBenannte ListenRückblick – Produktliste3Operatoren Teil 1
Arithmetische OperatorenGanzzahldivision und ModuloZuweisungsoperatorenRückblick – Einfache MathematikVergleichsoperatoren6Grundlegende Ein- und Ausgabe
Ausgabe mit printcat zur AusgabeAusgabe mit VariablenEingaben mit readline() lesenGrundlagen der TypkonvertierungRückblick – AltersrechnerRückblick – Wahr oder falsch9Funktionen
Eine Funktion deklarierenFunktionsargumenteRückgabewerteWiederholung – Sigma-FunktionWiederholung – ValidierungsfunktionStandardparameterwerteÜbe selbstständig: Online-R-Compiler