A matrix is a 2-dimensional structure whereas a vector is a one-dimensional structure. In this article, we are going to multiply the given matrix by the given vector using R Programming Language. Multiplication between the two occurs when vector elements are multiplied with matrix elements column-wise.
Approach:
- Create a matrix
- Create a vector
- Multiply them
- Display result.
Method 1: Naive method
Once the structures are ready we directly multiply them using the multiplication operator(*).
Example:
# create a vector for matrix elements
vector1=c(1,2,3,4,5,6,7,8,9,10,11,12)
# Create A matrix with 2 rows and 6 columns
matrix1 <- matrix(vector1, nrow=2,ncol=6)
# multiplication vector
mul_vec=c(1,2,3,4)
# print multiplication result
print(matrix1*mul_vec)
Output:
Example 2:
# create a vector for matrix elements
vector1=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
# Create A matrix with 4 rows and 4 columns
matrix1 <- matrix(vector1, nrow=4,ncol=4)
print(matrix1)
mul_vec=c(1,2,3,4)
print("Result")
print(matrix1*mul_vec)
Output:
Example 3:
This code has both matrix and vector has equal size
# create a vector for matrix elements
vector1=c(1,2,3,4)
# Create A matrix with 2 rows and 2 columns
matrix1 <- matrix(vector1,nrow=2,ncol=2)
print(matrix1)
mul_vec=c(1,2,3,4)
print("Result")
print(matrix1*mul_vec)
Output:
Method 2: Using sweep()
we can use sweep() method to multiply vectors to a matrix. sweep() function is used to apply the operation “+ or - or '*' or '/' ” to the row or column in the given matrix.
Syntax:
sweep(data, MARGIN, FUN)
Parameter:
- data=input matrix
- MARGIN: MARGIN = 2 means row; MARGIN = 1 means column.
- FUN: The operation that has to be done (e.g. + or - or * or /)
Here, we are performing "*" operation
Example:
# create matrix with 15 elements
matrix1 <- matrix(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15),
nrow=3,byrow=TRUE)
print(matrix1)
print("---------------")
# create a vector
vector1 <- c(1,2,3,4,5)
# apply sweep operation that multiplies row
# wise(margin=2)
print(sweep(matrix1, MARGIN=2,vector1, `*`))
print("---------------")
# create elements with vector 2
vector2 <- c(1,2,3)
# apply sweep operation that multiplies column
# wise with vector 2(margin=1)
print(sweep(matrix1, MARGIN=1,vector2, `*`))
Output:
Example 2:
# create matrix with 8 elements
matrix1 <- matrix(c(1,2,3,4,5,6,7,8),
nrow=2,byrow=TRUE)
print(matrix1)
print("---------------")
# create a vector
vector1 <- c(1,2,3,4)
# apply sweep operation that multiplies
# row wise(margin=2)
print(sweep(matrix1, MARGIN=2,vector1, `*`))
print("---------------")
# create elements with vector 2
vector2 <- c(1,2)
# apply sweep operation that multiplies column
# wise with vector 2(margin=1)
print(sweep(matrix1, MARGIN=1,vector2, `*`))
Output: