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 33Aber was passiert, wenn die Vektoren unterschiedliche Längen haben? R verwendet ein Verhalten namens Recycling. Der kürzere Vektor wird wiederholt, sodass er an die Länge des längeren angepasst wird:
numbers <- c(1, 2, 3, 4, 5, 6)
multiplier <- c(10, 100)
print(numbers * multiplier)Ausgabe:
[1] 10 200 30 400 50 600Hier 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 33Der einzelne Wert 1.1 wird wiederholt, um an die Länge von prices angepasst zu werden. Sei vorsichtig, wenn die Länge des längeren Vektors kein Vielfaches des kürzeren ist, da R die Operation trotzdem ausführt, aber möglicherweise eine Warnung über unvollständiges Wiederholen ausgibt.
Aufgabe
EinfachDu erhältst zwei Eingabezeilen:
- Eine durch Kommas getrennte Liste von Zahlen, die Basiswerte darstellen (z. B.
10,20,30,40,50,60) - Eine durch Kommas getrennte Liste von Multiplikatoren (z. B.
2,5)
Verwende Vektorarithmetik und Recycling:
- Erstelle einen numerischen Vektor aus den Basiswerten
- Erstelle einen numerischen Vektor aus den Multiplikatoren
- Multipliziere die Basiswerte mit den Multiplikatoren (R verwendet Recycling für den kürzeren Vektor)
- Gib das Ergebnis der Multiplikation aus
- Addiere
100zu jedem Element der ursprünglichen Basiswerte (Recycling eines einzelnen Werts) - Gib das Ergebnis der Addition aus
- Subtrahiere den Multiplikatorvektor vom Basiswertevektor
- Gib das Ergebnis der Subtraktion aus
Wenn die Eingaben beispielsweise folgendermaßen lauten:
5,10,15,20,25,30
3,7Die Ausgabe sollte folgendermaßen lauten:
[1] 15 70 45 140 75 210
[1] 105 110 115 120 125 130
[1] 2 3 12 13 22 23Erklärung:
- Multiplikation: Die Multiplikatoren
c(3, 7)werden zuc(3, 7, 3, 7, 3, 7)recycelt, wodurch5*3, 10*7, 15*3, 20*7, 25*3, 30*7entstehen - Addition: Der einzelne Wert
100wird recycelt, um ihn zu jedem Element zu addieren - Subtraktion: Die Multiplikatoren werden erneut recycelt, wodurch
5-3, 10-7, 15-3, 20-7, 25-3, 30-7entstehen
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 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 Eingabe3Operatoren 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