Verwendung von seq_along()
Teil des Abschnitts Grundlagen der R-Journey von Coddy — Lektion 64 von 78.
Manchmal benötigen Sie sowohl den Wert des Elements als auch seine Position im Vektor. Während das direkte Iterieren über Elemente sauber ist, bietet es keinen Zugriff auf den Index. Die Funktion seq_along() löst dies, indem sie eine Sequenz von Indizes für jeden beliebigen Vektor generiert.
Die seq_along()-Funktion gibt eine Sequenz von 1 bis zur Länge des Vektors zurück:
fruits <- c("apple", "banana", "cherry")
print(seq_along(fruits))Ausgabe:
[1] 1 2 3Indem Sie über diese Indizes iterieren, können Sie sowohl auf die Position als auch auf den Wert zugreifen:
fruits <- c("apple", "banana", "cherry")
for (i in seq_along(fruits)) {
cat(i, ":", fruits[i], "\n")
}Ausgabe:
1 : apple
2 : banana
3 : cherryDieser Ansatz ist besonders nützlich, wenn Sie Elemente an bestimmten Positionen ändern oder Elemente mit ihren Nachbarn vergleichen müssen. Die Verwendung von seq_along() ist sicherer als 1:length(vec), da sie leere Vektoren korrekt verarbeitet und eine leere Sequenz anstelle von 1:0 zurückgibt.
Aufgabe
EinfachSie erhalten eine einzelne Eingabezeile, die durch Kommas getrennte Zahlen enthält (z. B. 10,20,30,40,50).
Verwenden Sie seq_along(), um über den Vektor mit Indizes zu iterieren:
- Erstellen Sie einen Vektor aus der durch Kommas getrennten Eingabe
- Durchlaufen Sie den Vektor mit
seq_along(), um sowohl den Index als auch den Wert zu erhalten - Geben Sie für jedes Element den Index, den Wert und die kumulative Summe bis zu diesem Punkt aus (Summe aller Elemente von Position 1 bis zur aktuellen Position)
Verwenden Sie cat() mit dem Format: Position X: VALUE (Running total: TOTAL) gefolgt von einem Zeilenumbruch.
Wenn die Eingabe zum Beispiel wie folgt lautet:
5,10,15,20Sollte die Ausgabe wie folgt aussehen:
Position 1: 5 (Running total: 5)
Position 2: 10 (Running total: 15)
Position 3: 15 (Running total: 30)
Position 4: 20 (Running total: 50)Erklärung: An Position 1 ist der Wert 5 und die laufende Summe ist 5. An Position 2 ist der Wert 10 und die laufende Summe ist 5+10=15. An Position 3 ist der Wert 15 und die laufende Summe ist 5+10+15=30, und so weiter.
Hinweis: Verwenden Sie sum(vector[1:i]), um die kumulative Summe bis zur Position i zu berechnen.
Spickzettel
Die Funktion seq_along() generiert eine Sequenz von Indizes von 1 bis zur Länge eines Vektors:
fruits <- c("apple", "banana", "cherry")
print(seq_along(fruits))
# Ausgabe: [1] 1 2 3Verwenden Sie seq_along() in einer Schleife, um sowohl auf den Index als auch auf den Wert zuzugreifen:
fruits <- c("apple", "banana", "cherry")
for (i in seq_along(fruits)) {
cat(i, ":", fruits[i], "\n")
}
# Ausgabe:
# 1 : apple
# 2 : banana
# 3 : cherryDie Verwendung von seq_along() ist sicherer als 1:length(vec), da sie leere Vektoren korrekt verarbeitet und eine leere Sequenz anstelle von 1:0 zurückgibt.
Probier es selbst
# Eingabe lesen
con <- file("stdin", "r")
input_line <- suppressWarnings(readLines(con, n = 1))
close(con)
# Kommagetrennte Zeichenfolge in numerischen Vektor umwandeln
numbers <- as.numeric(strsplit(input_line, ",")[[1]])
# TODO: Schreiben Sie Ihren Code unten
# Verwenden Sie seq_along(), um den Vektor zu durchlaufen
# Geben Sie für jede Position den Index, den Wert und die laufende Summe aus
# Verwenden Sie cat() mit dem Format: Position X: VALUE (Running total: TOTAL)\nDiese 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 Eingabe3Operatoren 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-Parameterwerte12Iterieren über Sequenzen
Iterieren über VektorelementeVerwendung von seq_along()Iterieren über Zeichen (strsplit)String-Manipulationsfunktionen