Lesson 4b - Matrix
In this lesson, we cover the matrix container.
Table of Contents
Lesson Objectives
- Create a matrix and access its contents
What’s a Matrix?
A matrix is a two dimensional container similar to a vector (you can think of it almost like a vector of vectors). Just like vectors, the elements of a matrix must be of the same data type.
Creating a List
To create a matrix, we need to use the matrix(data, nrow, ncol)
function.
Input
myMatrix <- matrix(c(1,2,3,4,5,6), 2, 3)
myMatrix
Output
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
You can also set byrow
to TRUE
if you want the matrix to be filled by row first.
Input
myMatrix <- matrix(c(1,2,3,4,5,6), 2, 3, byrow=TRUE)
myMatrix
Output
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
Accessing Items in a Matrix
myMatrix <- matrix(c(1,2,3,4,5,6), 2, 3, byrow=TRUE)
myMatrix[1,1] # gets item in row 1, column 1
myMatrix[2,3] # gets item in row 2, column 3
myMatrix[2,] # gets all items in row 2 as a vector
myMatrix[,2] # gets all items in column 2 as a vector
myMatrix[2,, drop=FALSE] # gets all items in row 2 as a matrix
myMatrix[,2, drop=FALSE] # gets all items in column 2 as a matrix
myMatrix[c(1,2),] # gets all items in rows 1 and 2 ]
myMatrix[,-1] # gets all items except in column 1
myMatrix[,] # gets all items
If an indexing operation results in a one-row or one-column matrix, R will transform the output to a vector. You can disable this by setting drop
to FALSE
.
Modifying a Value in a Matrix
Just like with vectors, index the value you want to change and set that to your new value.
Input
myMatrix <- matrix(c(1,2,3,4,5,6), 2, 3, byrow=TRUE)
myMatrix[1,2] <- 25
myMatrix
Output
[,1] [,2] [,3]
[1,] 1 25 3
[2,] 4 5 6
Other Useful Functions
Getting the Dimensions of a Matrix
The dim()
function will tell you the dimensions of a matrix.
Input
myMatrix <- matrix(c(1,2,3,4,5,6), 2, 3, byrow=TRUE)
dim(myMatrix)
Output
[1] 2 3
Transposing a Matrix
You can get the transpose of a matrix using the t()
function.
Input
myMatrix <- matrix(c(1,2,3,4,5,6), 2, 3, byrow=TRUE)
t(myMatrix)
Output
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
Adding a Row/Column to a Matrix
You can add a row or column to a matrix using the rbind()
and cbind()
matrix.
Input
myMatrix <- matrix(c(1,2,3,4,5,6), 2, 3, byrow=TRUE)
myMatrix <- rbind(myMatrix, c(7, 8, 9))
myMatrix
Output
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
Key Points / Summary
- A matrix is similar to a vector, but in two dimensions.
- Just like vectors, all data types must be of the same type.