Bird
Raised Fist0
R Programmingprogramming~10 mins

Matrix multiplication (%*%) in R Programming - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Matrix multiplication (%*%)
Start with Matrix A and Matrix B
↓
Check dimensions: cols of A == rows of B?
↓
Error: Cannot multiply
↓
Multiply rows of A by columns of B
↓
Sum products for each element
↓
Build Result Matrix
↓
End
Matrix multiplication takes two matrices, checks if they can be multiplied, then multiplies rows of the first by columns of the second, summing products to form the result.
Execution Sample
R Programming
A <- matrix(c(1,2,3,4), nrow=2)
B <- matrix(c(5,6,7,8), nrow=2)
C <- A %*% B
print(C)
Multiply two 2x2 matrices A and B using %*% and print the result.
Execution Table
StepActionMatrix AMatrix BCalculationResult Matrix C
1Define Matrix A[1 3; 2 4][ ]N/A[ ]
2Define Matrix B[1 3; 2 4][5 7; 6 8]N/A[ ]
3Check dimensions2x22x2cols A=2 == rows B=2Proceed
4Calculate C[1,1]Row1 A: (1,3)Col1 B: (5,6)1*5 + 3*6 = 5 + 18 = 23C[1,1] = 23
5Calculate C[1,2]Row1 A: (1,3)Col2 B: (7,8)1*7 + 3*8 = 7 + 24 = 31C[1,2] = 31
6Calculate C[2,1]Row2 A: (2,4)Col1 B: (5,6)2*5 + 4*6 = 10 + 24 = 34C[2,1] = 34
7Calculate C[2,2]Row2 A: (2,4)Col2 B: (7,8)2*7 + 4*8 = 14 + 32 = 46C[2,2] = 46
8Final Result[1 3; 2 4][5 7; 6 8]All elements calculated[23 31; 34 46]
💡 All elements of result matrix C calculated; multiplication complete.
Variable Tracker
VariableStartAfter Step 4After Step 5After Step 6After Step 7Final
A[1 3; 2 4][1 3; 2 4][1 3; 2 4][1 3; 2 4][1 3; 2 4][1 3; 2 4]
B[ ][5 7; 6 8][5 7; 6 8][5 7; 6 8][5 7; 6 8][5 7; 6 8]
C[ ][23 NA; NA NA][23 31; NA NA][23 31; 34 NA][23 31; 34 46][23 31; 34 46]
Key Moments - 3 Insights
Why must the number of columns in Matrix A equal the number of rows in Matrix B?
Because each element in the result is a sum of products between a row of A and a column of B, their lengths must match (see Step 3 in execution_table).
How is each element of the result matrix calculated?
Each element is the sum of multiplying corresponding elements from a row of A and a column of B (see Steps 4-7 in execution_table).
Why does the result matrix have dimensions equal to rows of A and columns of B?
Because each row of A combines with each column of B to produce one element, so result size is rows of A by columns of B (see Step 8).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at Step 4. What is the value of C[1,1]?
A34
B23
C31
D46
💡 Hint
Check the 'Result Matrix C' column at Step 4 in execution_table.
At which step does the condition for matrix multiplication dimensions get checked?
AStep 3
BStep 2
CStep 5
DStep 7
💡 Hint
Look for the step mentioning 'Check dimensions' in execution_table.
If Matrix B had 3 rows instead of 2, what would happen at Step 3?
AResult matrix would be larger
BMultiplication proceeds normally
CError because cols of A != rows of B
DNo change in calculation
💡 Hint
Refer to the dimension check in Step 3 of execution_table.
Concept Snapshot
Matrix multiplication in R uses %*% operator.
Matrices A (m x n) and B (n x p) multiply if n matches.
Result is matrix C (m x p).
Each element C[i,j] = sum of A's row i * B's column j.
Use %*% for matrix product, not * which is element-wise.
Full Transcript
Matrix multiplication in R uses the %*% operator to multiply two matrices. First, the number of columns in the first matrix must equal the number of rows in the second matrix. Then, each element of the result matrix is calculated by multiplying elements from a row of the first matrix by elements from a column of the second matrix and summing these products. The result matrix has dimensions equal to the number of rows of the first matrix and the number of columns of the second matrix. This process is shown step-by-step in the execution table, where each element of the result matrix is computed. If the dimensions do not match, multiplication cannot proceed.

Practice

(1/5)
1. What does the operator %*% do in R?
easy
A. It multiplies two matrices using matrix multiplication rules.
B. It adds two matrices element-wise.
C. It multiplies two numbers element-wise.
D. It transposes a matrix.

Solution

  1. Step 1: Understand the operator %*%

    The operator %*% in R is specifically used for matrix multiplication, not element-wise operations or addition.
  2. Step 2: Differentiate from other operations

    Element-wise multiplication uses * and addition uses +. Transpose uses t(). So %*% is for matrix multiplication.
  3. Final Answer:

    It multiplies two matrices using matrix multiplication rules. -> Option A
  4. Quick Check:

    %*% = matrix multiplication [OK]
Hint: Remember %*% means matrix multiplication, not element-wise [OK]
Common Mistakes:
  • Confusing %*% with element-wise multiplication (*)
  • Thinking %*% adds matrices
  • Using %*% to transpose matrices
2. Which of the following is the correct syntax to multiply two matrices A and B in R?
easy
A. A * B
B. A %/% B
C. A + B
D. A %*% B

Solution

  1. Step 1: Identify matrix multiplication syntax

    In R, matrix multiplication uses the operator %*% between two matrices.
  2. Step 2: Check other operators

    * is element-wise multiplication, + is addition, and %/% is integer division, so they are incorrect for matrix multiplication.
  3. Final Answer:

    A %*% B -> Option D
  4. Quick Check:

    Matrix multiply = A %*% B [OK]
Hint: Use %*% for matrix multiply, * is element-wise [OK]
Common Mistakes:
  • Using * instead of %*% for matrix multiplication
  • Using + or %/% operators mistakenly
  • Forgetting spaces around %*%
3. What is the result of the following R code?
A <- matrix(c(1, 2, 3, 4), nrow=2, ncol=2)
B <- matrix(c(5, 6, 7, 8), nrow=2, ncol=2)
C <- A %*% B
print(C)
medium
A. [[6, 8], [10, 12]]
B. [[5, 12], [21, 32]]
C. [[23, 31], [34, 46]]
D. [[12, 14], [16, 18]]

Solution

  1. Step 1: Construct matrices A and B (column-major order)

    A = [[1, 3], [2, 4]]
    B = [[5, 7], [6, 8]]
  2. Step 2: Compute matrix multiplication

    C[1,1] = 1*5 + 3*6 = 5 + 18 = 23
    C[1,2] = 1*7 + 3*8 = 7 + 24 = 31
    C[2,1] = 2*5 + 4*6 = 10 + 24 = 34
    C[2,2] = 2*7 + 4*8 = 14 + 32 = 46
  3. Final Answer:

    [[23, 31], [34, 46]] -> Option C
  4. Quick Check:

    Matrix multiply result = [[23,31],[34,46]] [OK]
Hint: Remember R fills matrices by column, not row [OK]
Common Mistakes:
  • Assuming row-wise filling of matrices
  • Mixing element-wise and matrix multiplication
  • Incorrect multiplication order
4. Consider the code below. What is the error and how to fix it?
A <- matrix(1:6, nrow=2, ncol=3)
B <- matrix(1:4, nrow=2, ncol=2)
C <- A %*% B
medium
A. Error: Syntax error; fix by adding commas in matrix() calls.
B. Error: Non-conformable arguments; fix by making A's columns equal B's rows.
C. No error; code runs fine and returns a 2x2 matrix.
D. Error: Cannot multiply matrices with different number of rows; fix by transposing B.

Solution

  1. Step 1: Check matrix dimensions

    A is 2x3, B is 2x2. For matrix multiplication, A's columns (3) must equal B's rows (2). They don't match.
  2. Step 2: Identify error and fix

    R will give 'non-conformable arguments' error. To fix, B must have 3 rows or A must have 2 columns. For example, B <- matrix(1:6, nrow=3, ncol=2).
  3. Final Answer:

    Error: Non-conformable arguments; fix by making A's columns equal B's rows. -> Option B
  4. Quick Check:

    Matrix dims must match inner dimensions [OK]
Hint: Check if A's columns = B's rows before multiplying [OK]
Common Mistakes:
  • Ignoring dimension mismatch
  • Trying to multiply incompatible matrices
  • Assuming R auto-adjusts matrix sizes
5. You have two matrices:
M1 <- matrix(c(2, 0, 1, 3, 4, 5), nrow=2, ncol=3)
M2 <- matrix(c(1, 2, 3, 4, 5, 6), nrow=3, ncol=2)

What is the resulting matrix when you compute M1 %*% M2?
hard
A. [[16, 37], [21, 45]]
B. [[8, 12], [39, 54]]
C. [[5, 10], [29, 40]]
D. [[2, 4], [3, 6]]

Solution

  1. Step 1: Construct matrices M1 and M2 (column-major order)

    M1 = [[2, 1, 4], [0, 3, 5]]
    M2 = [[1, 4], [2, 5], [3, 6]]
  2. Step 2: Compute each element of the product

    C[1,1] = 2*1 + 1*2 + 4*3 = 2 + 2 + 12 = 16
    C[1,2] = 2*4 + 1*5 + 4*6 = 8 + 5 + 24 = 37
    C[2,1] = 0*1 + 3*2 + 5*3 = 0 + 6 + 15 = 21
    C[2,2] = 0*4 + 3*5 + 5*6 = 0 + 15 + 30 = 45
  3. Final Answer:

    [[16, 37], [21, 45]] -> Option A
  4. Quick Check:

    Matrix multiply result = [[16,37],[21,45]] [OK]
Hint: Remember R fills matrices by column, check carefully [OK]
Common Mistakes:
  • Assuming row-wise filling instead of column-wise
  • Mixing element-wise and matrix multiplication
  • Misaligning matrix dimensions
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard