Menu
Coddy logo textTech

Vektorarithmetik & Recycling

Teil des Abschnitts Grundlagen der R-Journey von Coddy — Lektion 69 von 78.

Wenn Sie arithmetische Operationen zwischen zwei Vektoren der gleichen Länge durchführen, wendet R die Operation elementweise an:

a <- c(1, 2, 3)
b <- c(10, 20, 30)
print(a + b)

Ausgabe:

[1] 11 22 33

Aber was passiert, wenn die Vektoren unterschiedliche Längen haben? R verwendet ein Verhalten namens Recycling. Der kürzere Vektor wird wiederholt, um der Länge des längeren zu entsprechen:

numbers <- c(1, 2, 3, 4, 5, 6)
multiplier <- c(10, 100)
print(numbers * multiplier)

Ausgabe:

[1]  10 200  30 400  50 600

Hier wurde multiplier zu c(10, 100, 10, 100, 10, 100) recycelt, bevor die Multiplikation stattfand. Dies ist besonders nützlich, wenn mit einem einzelnen Wert gearbeitet wird:

prices <- c(10, 20, 30)
print(prices * 1.1)

Ausgabe:

[1] 11 22 33

Der einzelne Wert 1.1 wird wiederholt (recycled), um der Länge von prices zu entsprechen. Seien Sie vorsichtig, wenn die Länge des längeren Vektors kein Vielfaches des kürzeren ist, da R die Operation zwar weiterhin ausführt, aber möglicherweise eine Warnung über teilweises Recycling ausgibt.

challenge icon

Aufgabe

Einfach

Sie erhalten zwei Eingabezeilen:

  1. Eine durch Kommas getrennte Liste von Zahlen, die Basiswerte darstellen (z. B. 10,20,30,40,50,60)
  2. Eine durch Kommas getrennte Liste von Multiplikatoren (z. B. 2,5)

Verwenden Sie Vektorarithmetik und Recycling:

  1. Erstellen Sie einen numerischen Vektor aus den Basiswerten
  2. Erstellen Sie einen numerischen Vektor aus den Multiplikatoren
  3. Multiplizieren Sie die Basiswerte mit den Multiplikatoren (R wird den kürzeren Vektor recyceln)
  4. Geben Sie das Ergebnis der Multiplikation aus
  5. Addieren Sie 100 zu jedem Element der ursprünglichen Basiswerte (Einzelwert-Recycling)
  6. Geben Sie das Ergebnis der Addition aus
  7. Subtrahieren Sie den Multiplikatoren-Vektor vom Basiswerte-Vektor
  8. Geben Sie das Ergebnis der Subtraktion aus

Zum Beispiel, wenn die Eingaben wie folgt lauten:

5,10,15,20,25,30
3,7

Die Ausgabe sollte wie folgt aussehen:

[1]  15  70  45 140  75 210
[1] 105 110 115 120 125 130
[1]  2  3 12 13 22 23

Erklärung:

  • Multiplikation: Die Multiplikatoren c(3, 7) werden zu c(3, 7, 3, 7, 3, 7) recycelt, was zu 5*3, 10*7, 15*3, 20*7, 25*3, 30*7 führt
  • Addition: Der Einzelwert 100 wird recycelt, um zu jedem Element addiert zu werden
  • Subtraktion: Die Multiplikatoren werden erneut recycelt, was zu 5-3, 10-7, 15-3, 20-7, 25-3, 30-7 führt

Spickzettel

Bei der Durchführung arithmetischer Operationen zwischen Vektoren unterschiedlicher Länge verwendet R das sogenannte Recycling – der kürzere Vektor wird wiederholt, um der Länge des längeren Vektors zu entsprechen:

numbers <- c(1, 2, 3, 4, 5, 6)
multiplier <- c(10, 100)
print(numbers * multiplier)

Ausgabe:

[1]  10 200  30 400  50 600

Der Vektor multiplier wird vor der Multiplikation zu c(10, 100, 10, 100, 10, 100) recycelt.

Das Recycling einzelner Werte ist besonders nützlich:

prices <- c(10, 20, 30)
print(prices * 1.1)

Ausgabe:

[1] 11 22 33

Der Wert 1.1 wird recycelt, um der Länge von prices zu entsprechen.

Hinweis: R kann eine Warnung ausgeben, wenn die Länge des längeren Vektors kein Vielfaches der Länge des kürzeren Vektors ist.

Probier es selbst

# Eingabe lesen
con <- file("stdin", "r")
base_input <- suppressWarnings(readLines(con, n = 1))
multipliers_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# Die durch Kommata getrennten Werte in numerische Vektoren umwandeln
base_values <- as.numeric(strsplit(base_input, ",")[[1]])
multipliers <- as.numeric(strsplit(multipliers_input, ",")[[1]])

# TODO: Schreiben Sie Ihren Code unten
# 1. Multiplizieren Sie base_values mit multipliers (Recycling erfolgt automatisch)
# 2. Geben Sie das Multiplikationsergebnis aus
# 3. Addieren Sie 100 zu jedem Element von base_values
# 4. Geben Sie das Additionsergebnis aus
# 5. Subtrahieren Sie multipliers von base_values
# 6. Geben Sie das Subtraktionsergebnis 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