A matrix is a two-dimensional data structure where data are arranged into rows and columns. For example,
Here, the above matrix is 3 * 3 (pronounced "three by three") matrix because it has 3 rows and 3 columns.
Create a Matrix in R
In R, we use the matrix() function to create a matrix.
The syntax of the matrix() function is
matrix(vector, nrow, ncol)
Here,
- vector - the data items of same type
nrow- number of rowsncol- number of columns- byrow (optional) - if
TRUE, the matrix is filled row-wise. By default, the matrix is filled column-wise.
Let's see an example,
# create a 2 by 3 matrix
matrix1 <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3, byrow = TRUE)
print(matrix1)
Output
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
In the above example, we have used the matrix() function to create a matrix named matrix1.
matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3, byrow = TRUE)
Here, we have passed data items of integer type and used c() to combine data items together. And nrow = 2 and ncol = 3 means the matrix has 2 rows and 3 columns.
Since we have passed byrow = TRUE, the data items in the matrix are filled row-wise. If we didn't pass byrow argument as
matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3)
The output would be
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
Access Matrix Elements in R
We use the vector index operator [ ] to access specific elements of a matrix in R.
The syntax to access a matrix element is
matrix[n1, n2]
Here,
n1- specifies the row positionn2- specifies the column position
Let's see an example,
matrix1 <- matrix(c("Sabby", "Cathy", "Larry", "Harry"), nrow = 2, ncol = 2)
print(matrix1)
# access element at 1st row, 2nd column
cat("\nDesired Element:", matrix1[1, 2])
Output
[,1] [,2]
[1,] "Sabby" "Larry"
[2,] "Cathy" "Harry"
Desired Element: Larry
In the above example, we have created a 2 by 2 matrix named matrix1 with 4 string type datas. Notice the use of index operator [],
matrix1[1, 2]
Here, [1, 2] specifies we are trying to access element present at 1st row, 2nd column i.e. "Larry".
Access Entire Row or Column
In R, we can also access the entire row or column based on the value passed inside [].
[n, ]- returns the entire element of the nth row.[ ,n]- returns the entire element of the nth column.
For example,
matrix1 <- matrix(c("Sabby", "Cathy", "Larry", "Harry"), nrow = 2, ncol = 2)
print(matrix1)
# access entire element at 1st row
cat("\n1st Row:", matrix1[1, ])
# access entire element at 2nd column
cat("\n2nd Column:", matrix1[, 2])
Output
[,1] [,2]
[1,] "Sabby" "Larry"
[2,] "Cathy" "Harry"
1st Row: Sabby Larry
2nd Column: Larry Harry
Here,
matrix1[1, ]- access entire elements at 1st row i.e.SabbyandLarrymatrix1[ ,2]- access entire elements at 2nd column i.e.LarryandHarry
Access More Than One Row or Column
We can access more than one row or column in R using the c() function.
[c(n1,n2), ]- returns the entire element of n1 and n2 row.[ ,c(n1,n2)]- returns the entire element of n1 and n2 column.
For example,
# create 2 by 3 matrix
matrix1 <- matrix(c(10, 20, 30, 40, 50, 60), nrow = 2, ncol = 3)
print(matrix1)
# access entire element of 1st and 3rd row
cat("\n1st and 2nd Row:", matrix1[c(1,3), ])
# access entire element of 2nd and 3rd column
cat("\n2nd and 3rd Column:", matrix1[ ,c(2,3)])
Output
[,1] [,2] [,3]
[1,] 10 30 50
[2,] 20 40 60
1st and 3rd Row: 10 20 30 40 50 60
2nd and 3rd Column: 30 40 50 60
Here,
[c(1,3), ]- returns the entire element of 1st and 3rd row.[ ,c(2,3)]- returns the entire element of 2nd and 3rd column.
Modify Matrix Element in R
We use the vector index operator [] to modify the specified element. For example,
matrix1[1,2] = 140
Here, the element present at 1st row, 2nd column is changed to 140.
Let's see an example,
# create 2 by 2 matrix
matrix1 <- matrix(c(1, 2, 3, 4), nrow = 2, ncol = 2)
# print original matrix
print(matrix1)
# change value at 1st row, 2nd column to 5
matrix1[1,2] = 5
# print updated matrix
print(matrix1)
Output
[,1] [,2]
[1,] 1 3
[2,] 2 4
[,1] [,2]
[1,] 1 5
[2,] 2 4
Combine Two Matrices in R
In R, we use the cbind() and the rbind() function to combine two matrices together.
cbind()- combines two matrices by columnsrbind()- combines two matrices by rows
The number of rows and columns of two matrices we want to combine must be equal. For example,
# create two 2 by 2 matrices
even_numbers <- matrix(c(2, 4, 6, 8), nrow = 2, ncol = 2)
odd_numbers <- matrix(c(1, 3, 5, 7), nrow = 2, ncol = 2)
# combine two matrices by column
total1 <- cbind(even_numbers, odd_numbers)
print(total1)
# combine two matrices by row
total2 <- rbind(even_numbers, odd_numbers)
print(total2)
Output
[,1] [,2] [,3] [,4]
[1,] 2 6 1 5
[2,] 4 8 3 7
[,1] [,2]
[1,] 2 6
[2,] 4 8
[3,] 1 5
[4,] 3 7
Here, first we have used the cbind() function to combine the two matrices: even_numbers and odd_numbers by column. And rbind() to combine two matrices by row.
Check if Element Exists in R Matrix
In R, we use the %in% operator to check if the specified element is present in the matrix or not and returns a boolean value.
TRUE- if specified element is present in the matrixFALSE- if specified element is not present in the matrix
For example,
matrix1 <- matrix(c("Sabby", "Cathy", "Larry", "Harry"), nrow = 2, ncol = 2)
"Larry" %in% matrix1 # TRUE
"Kinsley" %in% matrix1 # FALSE
Output
TRUE FALSE
Here,
"Larry"is present in matrix1, so the method returnsTRUE"Kinsley"is not present in matrix1, so the method returnsFALSE