0Pricing
R Academy · Lektion

Matrixarithmetik und -operationen

Führen Sie elementweise und Matrixmultiplikation, Addition und Subtraktion aus.

Matrixarithmetik und -operationen ist eine kostenlose R Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des R Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.

Elementweise und Matrixoperationen

R unterscheidet zwischen elementweisen Operationen (mit +, -, *, /) und echten Matrixoperationen (mit %*%). Das Verständnis dieses Unterschieds ist entscheidend für korrekte lineare Algebra.

A <- matrix(c(1,2,3,4), nrow = 2)
B <- matrix(c(5,6,7,8), nrow = 2)
cat('A:
'); print(A)
cat('B:
'); print(B)

# Element-wise multiply
cat('A * B (element-wise):
'); print(A * B)
# Matrix multiply
cat('A %*% B (matrix mult):
'); print(A %*% B)

Elementweise Addition und Subtraktion

+ und - zwischen zwei Matrizen mit den gleichen Dimensionen addieren oder subtrahieren die entsprechenden Elemente. Dabei handelt es sich ausschließlich um elementweise Operationen.

# Monthly revenue vs target (in thousands)
revenue <- matrix(c(120,135,110,98, 145,160,132,115),
                  nrow = 2, byrow = TRUE)
target  <- matrix(c(130,130,130,130, 150,150,150,150),
                  nrow = 2, byrow = TRUE)

deviation <- revenue - target
cat('Revenue vs Target deviation:
')
print(deviation)
cat('Above target?:
')
print(revenue >= target)

Elementweise Division und Multiplikation

Ebenso werden bei * und / zwischen gleich großen Matrizen die Elemente einzeln verarbeitet. Das ist nützlich, um Matrizen elementweise zu skalieren, zu normalisieren oder zu kombinieren.

# Scale a matrix by another (element-wise)
prices <- matrix(c(10, 20, 15, 25), nrow = 2)
quantities <- matrix(c(5, 3, 8, 2), nrow = 2)

total_cost <- prices * quantities
cat('Total cost per item:
')
print(total_cost)

# Normalise to row maximum
max_prices <- matrix(rep(apply(prices, 1, max), 2), nrow = 2)
norm_prices <- prices / max_prices
cat('Normalised prices:
')
print(norm_prices)

Skalaroperationen auf Matrizen

Sie können mit den üblichen arithmetischen Operatoren eine Skalaroperation (mit einer einzelnen Zahl) auf jedes Element einer Matrix anwenden. Der Skalar wird wiederholt, bis er zu den Matrixdimensionen passt.

m <- matrix(c(10, 20, 30, 40, 50, 60), nrow = 2, ncol = 3)
cat('Original:
'); print(m)

cat('m + 5:
');  print(m + 5)
cat('m * 2:
');  print(m * 2)
cat('m / 10:
'); print(m / 10)
cat('m ^ 2:
');  print(m ^ 2)

Echte Matrixmultiplikation %*%

A %*% B führt eine Matrixmultiplikation der linearen Algebra durch. Damit dies funktioniert, muss die Anzahl der Spalten in A der Anzahl der Zeilen in B entsprechen. Das Ergebnis hat die Dimensionen (Zeilen von A) x (Spalten von B).

# 2x3 times 3x2 = 2x2
A <- matrix(c(1,2,3, 4,5,6), nrow = 2, byrow = TRUE)
B <- matrix(c(7,8, 9,10, 11,12), nrow = 3, byrow = TRUE)
cat('A (2x3):
'); print(A)
cat('B (3x2):
'); print(B)
cat('A %*% B (2x2):
'); print(A %*% B)

rowSums() und colSums()

rowSums(m) berechnet die Summe jeder Zeile; colSums(m) berechnet die Summe jeder Spalte. Beide geben benannte Vektoren zurück, wenn die Matrix Dimensionsnamen besitzt.

sales <- matrix(
  c(120,135,110,98,  145,160,132,115,  88,95,102,78),
  nrow = 3, byrow = TRUE,
  dimnames = list(c('Q1','Q2','Q3'), c('Jan','Feb','Mar','Apr'))
)
cat('Sales matrix:
'); print(sales)
cat('Quarterly totals:', rowSums(sales), '
')
cat('Monthly totals: ', colSums(sales), '
')

rowMeans() und colMeans()

rowMeans(m) und colMeans(m) geben jeweils den Mittelwert jeder Zeile und Spalte zurück. Für diese häufige Aufgabe sind sie schneller als die Anwendung von mean() mit apply().

exam_scores <- matrix(
  c(88,92,75,81, 79,85,90,73, 95,78,82,88),
  nrow = 3, byrow = TRUE,
  dimnames = list(c('Alice','Bob','Carol'), c('Math','Sci','Eng','Hist'))
)
cat('Student averages:
')
print(rowMeans(exam_scores))
cat('Subject averages:
')
print(colMeans(exam_scores))

Vergleichsoperationen auf Matrizen

Auf Matrizen angewendete Vergleichsoperatoren (==, >, <= usw.) geben eine logische Matrix mit denselben Dimensionen zurück. Diese Maske können Sie anschließend zum Auswählen oder Zählen verwenden.

scores <- matrix(c(88,45,92,61,73,55,84,79), nrow = 2)
cat('Scores:
'); print(scores)

# Which elements pass?
passing_mask <- scores >= 60
cat('Passing mask:
'); print(passing_mask)
cat('Number passing:', sum(passing_mask), '
')
cat('Passing scores:', scores[passing_mask], '
')

apply() für benutzerdefinierte Zeilen-/Spaltenoperationen

apply(m, MARGIN, FUN) wendet eine Funktion auf Zeilen (MARGIN=1) oder Spalten (MARGIN=2) an. Verwenden Sie es, wenn Sie eine benutzerdefinierte Aggregation benötigen, die über rowSums/colMeans hinausgeht.

m <- matrix(c(3,1,4,1,5,9,2,6,5,3,5,8), nrow = 3)
cat('Matrix:
'); print(m)

# Max of each row
cat('Row max:  ', apply(m, 1, max), '
')
# Range of each column
cat('Col range:
')
print(apply(m, 2, range))
# Custom: count values > 4 per row
cat('Values > 4 per row:', apply(m, 1, function(x) sum(x > 4)), '
')

Einen Vektor über Zeilen verteilen

Wenn Sie einen Vektor zu einer Matrix addieren oder ihn mit ihr multiplizieren, wiederholt R den Vektor, indem es ihn zyklisch durchläuft, bis er zur Länge der Matrix passt. Die Wiederholung erfolgt spaltenweise, was zu unerwarteten Ergebnissen führen kann, wenn Sie zeilenweise arbeiten möchten.

m <- matrix(c(10,20,30, 40,50,60), nrow = 2)
cat('Matrix:
'); print(m)

# Add a 3-element vector: R recycles column-by-column
v <- c(1, 2, 3)
cat('m + c(1,2,3):
'); print(m + v)

# For row-wise scaling, use sweep()
row_weights <- c(0.5, 2.0)  # scale row 1 by 0.5, row 2 by 2
cat('Row-wise scaled:
'); print(sweep(m, 1, row_weights, '*'))

Zusammenfassung der arithmetischen Operationen

Wichtige Funktionen für Matrixoperationen in R:

  • +, -, *, / – elementweise Arithmetik
  • %*% – Matrixmultiplikation (lineare Algebra)
  • rowSums(), colSums() – Zeilen-/Spaltensummen
  • rowMeans(), colMeans() – Zeilen-/Spaltenmittelwerte
  • apply(m, 1, fn) / apply(m, 2, fn) – benutzerdefinierte Zeilen-/Spaltenaggregation
  • sweep() – zeilen-/spaltenweise Operationen mit einem Vektor
m <- matrix(c(4,9,16,25), nrow = 2)
cat('Original:
'); print(m)
cat('sqrt (element-wise):
'); print(sqrt(m))
cat('rowSums:', rowSums(m), '
')
cat('colMeans:', colMeans(m), '
')

Schnelltest

Was berechnet A * B, wenn A und B in R 2x2-Matrizen sind?

Zusammenfassung: Matrixarithmetik

Gute Arbeit! Die wichtigsten Erkenntnisse aus dieser Lektion:

  • +, -, *, / auf Matrizen arbeiten elementweise
  • %*% ist eine echte Matrixmultiplikation (Zeilen × Spalten)
  • rowSums(), colSums(), rowMeans(), colMeans() aggregieren über Zeilen oder Spalten
  • Vergleichsoperatoren geben eine logische Matrix mit derselben Form zurück
  • apply(m, 1, fn) wendet eine Funktion zeilenweise an; apply(m, 2, fn) spaltenweise
  • Verwenden Sie sweep() für die vektorisierte Skalierung von Zeilen oder Spalten
# Final: compute grade curve (add 5 to all scores, cap at 100)
raw <- matrix(c(88,55,92,73,60,45,78,95), nrow = 2)
curved <- pmin(raw + 5, 100)  # pmin applies min element-wise
cat('Raw:
');    print(raw)
cat('Curved:
'); print(curved)

Häufig gestellte Fragen

Ist die Lektion „Matrixarithmetik und -operationen“ kostenlos?

Ja — der vollständige Text von „Matrixarithmetik und -operationen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des R Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Matrixarithmetik und -operationen“?

Führen Sie elementweise und Matrixmultiplikation, Addition und Subtraktion aus. Du übst R Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um R Academy zu starten?

Keine Vorkenntnisse erforderlich. R Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Matrixarithmetik und -operationen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser R Academy-Lektion Code schreiben und ausführen?

Ja. Jede R Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Matrizen mit matrix() erstellen
  2. Matrixindizierung und Subsetting
  3. Matrixarithmetik und -operationen
  4. Matrizen transponieren und umformen
← Zurück zu R Academy