Menu
Coddy logo textTech

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 3

Indem 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 : cherry

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

challenge icon

Aufgabe

Einfach

Sie 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:

  1. Erstellen Sie einen Vektor aus der durch Kommas getrennten Eingabe
  2. Durchlaufen Sie den Vektor mit seq_along(), um sowohl den Index als auch den Wert zu erhalten
  3. 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,20

Sollte 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 3

Verwenden 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 : cherry

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.

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)\n
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