Listen modifizieren
Teil des Abschnitts Grundlagen der R-Journey von Coddy — Lektion 73 von 78.
Nachdem Sie nun wissen, wie man Listen erstellt und auf ihre Elemente zugreift, lernen wir nun, wie man sie verändert. Sie können bestehende Elemente ändern, neue hinzufügen oder Elemente vollständig entfernen.
Um ein bestehendes Element zu ändern, verwenden Sie doppelte Klammern mit einer Zuweisung:
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- "world"
print(my_list)Ausgabe:
[[1]]
[1] 10
[[2]]
[1] "world"
[[3]]
[1] TRUEUm ein neues Element hinzuzufügen, weisen Sie es einfach einem Index zu, der noch nicht existiert:
my_list <- list(10, "hello")
my_list[[3]] <- FALSE
print(my_list)Ausgabe:
[[1]]
[1] 10
[[2]]
[1] "hello"
[[3]]
[1] FALSEUm ein Element zu entfernen, weisen Sie ihm NULL zu:
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULL
print(my_list)Ausgabe:
[[1]]
[1] 10
[[2]]
[1] TRUEBeachten Sie, dass nach dem Entfernen des zweiten Elements die verbleibenden Elemente aufrücken, um die Lücke zu füllen. Das Element, das sich an Position 3 befand, ist nun an Position 2.
Aufgabe
EinfachSie erhalten drei Eingabezeilen:
- Drei durch Kommata getrennte Werte zur Initialisierung einer Liste (z. B.
50,hello,TRUE) - Einen Index und einen neuen Wert, getrennt durch ein Komma, für eine Änderung (z. B.
2,goodbye) - Einen Index des zu entfernenden Elements (z. B.
3)
Führen Sie die folgenden Operationen aus:
- Erstellen Sie eine Liste mit den drei Anfangswerten (konvertieren Sie diese in die entsprechenden Typen: numerisch, Zeichenfolge, logisch)
- Geben Sie die ursprüngliche Liste aus
- Ändern Sie das Element am angegebenen Index mit dem neuen Wert (behalten Sie diesen als Zeichenfolge bei)
- Geben Sie die Liste nach der Änderung aus
- Fügen Sie der Liste ein neues viertes Element mit dem Wert
999hinzu - Geben Sie die Liste nach dem Hinzufügen des neuen Elements aus
- Entfernen Sie das Element am angegebenen Index (aus der dritten Eingabe)
- Geben Sie die endgültige Liste aus
Wenn die Eingaben beispielsweise wie folgt lauten:
100,world,FALSE
1,updated
2Sollte die Ausgabe wie folgt aussehen:
[[1]]
[1] 100
[[2]]
[1] "world"
[[3]]
[1] FALSE
[[1]]
[1] "updated"
[[2]]
[1] "world"
[[3]]
[1] FALSE
[[1]]
[1] "updated"
[[2]]
[1] "world"
[[3]]
[1] FALSE
[[4]]
[1] 999
[[1]]
[1] "updated"
[[2]]
[1] FALSE
[[3]]
[1] 999Erklärung:
- Ursprüngliche Liste: 100, "world", FALSE
- Nach Änderung von Index 1: "updated", "world", FALSE
- Nach Hinzufügen des vierten Elements: "updated", "world", FALSE, 999
- Nach Entfernen von Index 2: "updated", FALSE, 999 (die verbleibenden Elemente verschieben sich)
Denken Sie daran, doppelte Klammern [[ ]] für Änderungen zu verwenden und NULL zuzuweisen, um Elemente zu entfernen.
Spickzettel
Um ein bestehendes Element in einer Liste zu ändern, verwenden Sie doppelte Klammern mit Zuweisung:
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- "world"Um ein neues Element zu einer Liste hinzuzufügen, weisen Sie es einem Index zu, der noch nicht existiert:
my_list <- list(10, "hello")
my_list[[3]] <- FALSEUm ein Element aus einer Liste zu entfernen, weisen Sie ihm NULL zu:
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULLWenn ein Element entfernt wird, verschieben sich die verbleibenden Elemente, um die Lücke zu füllen. Das Element, das sich an Position 3 befand, rückt an Position 2.
Probier es selbst
# Eingabe lesen
con <- file("stdin", "r")
initial_values <- suppressWarnings(readLines(con, n = 1)) # Drei durch Komma getrennte Werte
modify_input <- suppressWarnings(readLines(con, n = 1)) # Index und neuer Wert
remove_index <- suppressWarnings(readLines(con, n = 1)) # Zu entfernender Index
close(con)
# Die Anfangswerte parsen
values <- strsplit(initial_values, ",")[[1]]
val1 <- as.numeric(values[1])
val2 <- values[2]
val3 <- as.logical(values[3])
# Modifikationseingabe parsen
mod_parts <- strsplit(modify_input, ",")[[1]]
mod_index <- as.numeric(mod_parts[1])
mod_value <- mod_parts[2]
# Zu entfernenden Index parsen
rem_index <- as.numeric(remove_index)
# TODO: Schreiben Sie Ihren Code unten
# 1. Erstellen Sie eine Liste mit den drei Anfangswerten (val1, val2, val3)
# 2. Geben Sie die ursprüngliche Liste aus
# 3. Ändern Sie das Element bei mod_index mit mod_value
# 4. Geben Sie die Liste nach der Änderung aus
# 5. Fügen Sie ein neues viertes Element mit dem Wert 999 hinzu
# 6. Geben Sie die Liste nach dem Hinzufügen aus
# 7. Entfernen Sie das Element bei rem_index (verwenden Sie NULL)
# 8. Geben Sie die endgültige Liste 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