Matrices

Matrices are R objects where elements are arranged in a two-dimensional rectangular layout.

Like arrays, they contain elements of the same data type.

Creating Matrices

A Matrix is created using the matrix() function. The matrix() function takes an atomic vector as input. We can also define how many rows should be in the matrix by setting the nrow argument to a number. Furthermore, we can also set the ncol argument, which tells R how many columns to include in the matrix.

Why Do We Need Matrices If We Have Arrays?

Matrices in R language are only 22 dimensional. A matrix is just a more convenient constructor. There are many functions and methods especially mathematical and statistical methods that only accept 2D arrays. So, to ensure that the programmer does not make the mistake of making the 2D array an nD array, a convenient object specifically for this task matrix is used.

Syntax

matrix(data, nrow, ncol, byrow, dimnames)

Here, data is the input vector, nrow is the number of rows to be created, ncol is the number of columns to be created, byrow is a logical clue: which if set to TRUE arranges elements row-wise and dimnames is the parameter that lets us assign names to the rows and columns.

Let’s have a look at the code to create an empty matrix:

Press + to interact
myMatrix <- matrix(nrow = 2, ncol = 2)
print(myMatrix)

Let’s use a populated vector to create a matrix:

Press + to interact
myVector <- c(1, 2, 3, 4)
myMatrix <- matrix(myVector, nrow = 2, ncol = 2)
print(myMatrix)

Let’s play around with the matrix() function.

# Elements arranged sequentially by row.
myMatrix <- matrix(c(1:12), nrow = 4, byrow = TRUE)
print(myMatrix)
Manipulating the byrow parameter

We can also set the names of rows and columns. In the following code snippet, we name rows from r1...r4 and name columns from c1...c3.

Press + to interact
# Define the column and row names.
rownames = c("r1", "r2", "r3", "r4")
colnames = c("c1", "c2", "c3")
myMatrix <- matrix(c(1:12), nrow = 4, ncol = 3, byrow = TRUE, dimnames = list(rownames, colnames))
print(myMatrix)

Accessing and Manipulating Matrices

Elements of a matrix can be accessed and updated by using the row and column index of the element inside square brackets [].

Press + to interact
myMatrix <- matrix(c(1:12), nrow = 4, byrow = TRUE)
print(myMatrix[2, 3])

Changing the value of an element in a matrix can be done by first accessing the element using square brackets and then assigning it a different value or by using the column-wise single index.

myMatrix <- matrix(c(1:12), nrow = 4, byrow = TRUE)
myMatrix[2, 3] = 0
print(myMatrix)
Changing element at row 2 and column 3