The diagonal matrix is a very important concept that greatly affects optimizing algorithms. In this article, we will introduce the diag() function in R – a function to manipulate matrices to get diagonal matrices.
What is the diag() function in R?
The diag() function replaces or extracts the matrix’s diagonal or creates a diagonal matrix.
Syntax:
- diag(matrix): Return the diagonal of the matrix.
- diag(matrix) = vector: Replace the diagonal of the matrix with new values.
- diag(value, m, n): Create a matrix having m rows and n columns, and the main diagonal elements are equal to the value, while other elements are 0.
Parameters:
- matrix: An existing matrix
- vector: A vector containing new values for the diagonal
- value: Values for the diagonal
- m: Number of rows
- n: Number of columns
How to use the diag() function?
Use the diag() function to get the diagonal of the matrix
Look at the following example and see how to get the primary diagonal value of a matrix.
Code:
# Create a vector containing values for a matrix vector = c(1, 0, 11, 6, 3, 15, 21, 13, 7) # Create a 3 x 3 matrix from the vector matrix = matrix(vector, nrow = 3, ncol =3) cat("The matrix is:\n") print(matrix) cat("The diagonal of the matrix is:\n") print(diag(matrix))
Result:
The matrix is:
[,1] [,2] [,3]
[1,] 1 6 21
[2,] 0 3 13
[3,] 11 15 7
The diagonal of the matrix is:
[1] 1 3 7
Use the diag() function to replace the diagonal of the matrix
In this example, we will replace the diagonal of an existing matrix with new values.
Code:
# Create a vector containing values for a matrix vector = c(1, 9, 11, 6, 3, 15, 21, 13, 7) # Create a 3 x 3 matrix from the vector matrix = matrix(vector, nrow = 3, ncol =3) cat("The initial matrix is:\n") print(matrix) # Replace the diagonal of the matrix with 0 diag(matrix) = c(0, 0, 0) cat("The new matrix is:\n") print(matrix)
Result:
The initial matrix is:
[,1] [,2] [,3]
[1,] 1 6 21
[2,] 9 3 13
[3,] 11 15 7
The new matrix is:
[,1] [,2] [,3]
[1,] 0 6 21
[2,] 9 0 13
[3,] 11 15 0
Use the diag() function to create an mxn diagonal matrix
Finally, the diag() function can create a matrix size m x n with the defined values in the main diagonal while other values are equal to zero.
Code:
# Create a 3 x 3 matrix with all elements in the main diagonal equal to 1 matrix = diag(1, 3, 3) cat("The matrix with the diagonal is equal to 1:") print(matrix)
Result:
The matrix with the diagonal is equal to 1:
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
Summary
In summary, the diag() provides methods to work with diagonal matrices. You can use this function to get the values of the diagonal, replace the values of the diagonal and create a new matrix with fixed values in the diagonal.
Maybe you are interested:
- split function in R: Divide data into groups
- choose.file in R: How to perform choose.file() function in R
- comment In R: How To Use Comment

My name is Robert Collier. I graduated in IT at HUST university. My interest is learning programming languages; my strengths are Python, C, C++, and Machine Learning/Deep Learning/NLP. I will share all the knowledge I have through my articles. Hope you like them.
Name of the university: HUST
Major: IT
Programming Languages: Python, C, C++, Machine Learning/Deep Learning/NLP