Listen ändern
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 nachrücken, um die Lücke zu füllen. Das Element, das sich an Position 3 befand, ist nun an Position 2.
Aufgabe
EinfachDu erhältst drei Eingabezeilen:
- Drei durch Kommas getrennte Werte zum Initialisieren einer Liste (z. B.
50,hello,TRUE) - Ein durch ein Komma getrennter Index und ein neuer Wert zur Änderung (z. B.
2,goodbye) - Ein Index des zu entfernenden Elements (z. B.
3)
Führe die folgenden Operationen aus:
- Erstelle eine Liste mit den drei Anfangswerten (wandle sie in die entsprechenden Typen um: numerisch, Zeichen, logisch)
- Gib die ursprüngliche Liste aus
- Ändere das Element am angegebenen Index mit dem neuen Wert (behalte es als Zeichenkette bei)
- Gib die Liste nach der Änderung aus
- Füge der Liste ein neues viertes Element mit dem Wert
999hinzu - Gib die Liste nach dem Hinzufügen des neuen Elements aus
- Entferne das Element am angegebenen Index (aus der dritten Eingabe)
- Gib die endgültige Liste aus
Wenn die Eingaben beispielsweise folgendermaßen lauten:
100,world,FALSE
1,updated
2Die Ausgabe sollte folgendermaßen 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 der Änderung von Index 1: "updated", "world", FALSE
- Nach dem Hinzufügen des vierten Elements: "updated", "world", FALSE, 999
- Nach dem Entfernen von Index 2: "updated", FALSE, 999 (die verbleibenden Elemente rücken nach)
Denke daran, für Änderungen doppelte eckige Klammern [[ ]] zu verwenden und NULL zuzuweisen, um Elemente zu entfernen.
Probier es selbst
# Eingabe lesen
con <- file("stdin", "r")
initial_values <- suppressWarnings(readLines(con, n = 1)) # Drei durch Kommas 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]
# Löschindex parsen
rem_index <- as.numeric(remove_index)
# TODO: Schreibe deinen Code unten
# 1. Erstelle eine Liste mit den drei Anfangswerten (val1, val2, val3)
# 2. Gib die ursprüngliche Liste aus
# 3. Ändere das Element bei mod_index mit mod_value
# 4. Gib die Liste nach der Änderung aus
# 5. Füge ein neues viertes Element mit dem Wert 999 hinzu
# 6. Gib die Liste nach dem Hinzufügen aus
# 7. Entferne das Element an der Position rem_index (verwende NULL)
# 8. Gib die finale 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 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