Menu
Coddy logo textTech

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] 42

Einfache 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] 42

Dieser 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] 20

Hier 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.

challenge icon

Aufgabe

Einfach

Sie erhalten zwei Eingabezeilen:

  1. Drei durch Kommas getrennte Werte unterschiedlicher Typen (z. B. 100,hello,TRUE)
  2. 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:

  1. Erstellen Sie eine Liste mit vier Elementen: dem numerischen Wert, dem Text, dem logischen Wert und dem Vektor aus Zahlen
  2. Verwenden Sie doppelte Klammern, um das zweite Element (den Textwert) zu extrahieren und auszugeben
  3. Verwenden Sie einfache Klammern, um das dritte Element zu extrahieren und das Ergebnis auszugeben (beachten Sie den Unterschied im Ausgabeformat)
  4. 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
  5. 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,40

Sollte die Ausgabe wie folgt aussehen:

[1] "world"
[[1]]
[1] FALSE

[1] 24
[1] 120

Erklä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: 24
  • sum(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] 42

Einfache Klammern [ ] geben eine Unterliste zurück, die das Element enthält:

my_list <- list(42, "hello", TRUE)
print(my_list[1])  # Ausgabe: [[1]] [1] 42

Zugriff 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] 20

Verwenden 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 aus
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen