Matrix in R Programming

In this tutorial you will explore matrix in R.You will learn to create a matrix, there are different methods in creating matrices you can learn and choose the most appropriate method for creating a matrix of your choice. Further naming rows and columns in a matrix, checking matrix existence, selecting, modifying, and deleting elements from a matrix.

What is a matrix in R?

A matrix is like a sibling of the vector. You know a vector is a data structure with a sequence of data elements that is dimensional and a matrix is also a similar collection of data elements but the difference is elements are arranged into a fixed number of rows and columns. Since matrix data elements are arranged in rows and columns they are called two-dimensional.

Vector -> 1D Matrix  ->  2D

To create a vector

> Vector<- c(3,5,4,8)
 

To create a matrix

> Matrix <-matrix(c(3,5,4,8),nrow =2,ncol=2)
 

Output

[1] 3 5 4 8
 

Output

         [,1] [,2]
[1,]    3    4
[2,]    5    8
 

Matrix in R Matrix in R

Note: Don’t bother about the syntax just understand the concept.

A matrix is a two-dimensional array (2D) with rows and columns where the matrix contains elements of similar basic data types like numerals, character, logical, etc.

The following is an example of a matrix with 2 rows and 2 columns.

Matrix in R

How to create a matrix in R?

In R, a matrix is created using matrix() function.

The basic Syntax 1 to create a matrix is a matrix() function with arguments such as data, number of rows, number of columns passed inside the parentheses.


matrix(data,nrow,ncol)         #Syntax 1
 

Where the arguments inside matrix() are

  • data  = the elements inside matrix (distributed column-wise)
  • nrow = number of rows
  • ncol = number of columns

A simple program that creates a matrix using Syntax 1


> MATRIX <- matrix(1:15, nrow=3, ncol=5)
> MATRIX

 

Output:


     [,1] [,2] [,3] [,4] [,5]
[1,]    1    4    7   10   13
[2,]    2    5    8   11   14
[3,]    3    6    9   12   15


matrix(data, nrow, ncol, byrow =TRUE)    #Syntax 2
 

Where byrow =TRUE distribute the elements row-wise.

A simple matrix created using Syntax 2


> MATRIX <- matrix(1:15, nrow=3, ncol=5,byrow =TRUE)
> MATRIX
 

Output:


     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    6    7    8    9   10
[3,]   11   12   13   14   15

Matrix in R

Syntax 1 arranges the data in column-wise by default, in syntax 2 we passed the argument byrow = TRUE which arranges the same data inside the matrix row-wise.

The numbers 1 2 3 4 5 are arranged column-wise in Syntax 1 where the same data(numbers) is arranged as rows by using byrow =TRUE while creating a matrix in Syntax 2.

Note: By default, matrices are created with column-wise data in that case byrow=FALSE.You can either give byrow=FALSE else by default it takes column-wise arrangement of data.

How to create a matrix by filling elements row-wise in R?

In R language they provide a built-in function rbind() to create a matrix by filling data or elements row-wise.In R programming rbind stands for row binding.


rbind(data)
 

Example: matrix<- rbind(Item_NO,Item_name)

Working of rbind() function in R Programming


// Place code hereItem_NO <- c(1:4)
Item_name<-c("MILK","CHEESE","BUTTER","CURD")
matrix<- rbind(Item_NO,Item_name)
print(matrix)

Output produced by the above code


NO        "1"             "2"           "3"              "4"   
Item_name  "MILK" "CHEESE" "BUTTER" "CURD"

You can infer from the output that the set of data are distributed along the rows.

How to create a matrix by filling elements column-wise in R?

In R language they provide a built-in function cbind() to create a matrix by filling data or elements column-wise.R programming cbind stands for column binding.


cbind(data)
 

Example : matrix<- cbind(Item_NO,Item_name)

Let us see a code

Working of cbind() function in R Programming


Item_NO <- c(1:4)
Item_name<-c("MILK","CHEESE","BUTTER","CURD")
matrix<- cbind(Item_NO,Item_name)
print(matrix)
 

Output:


    Item_NO  Item_name
[1,] "1"     "MILK"   
[2,] "2"     "CHEESE" 
[3,] "3"     "BUTTER" 
[4,] "4"     "CURD"   

You can infer from the output the data is displayed column-wise with Item_NO corresponding to each Item_name column-wise.

Note in both rbind() and cbind() we can have deparse.level. The deparse.level can be set to 0,1 which constructs labels to the matrix.

Consider the table below to better infer the output of rbind() in different values for deparse.level.

rbind and cbind in R Programming

Function Code Output
rbind()

matrix<- rbind(Item_NO,Item_name,deparse.level = 0)
 

 

matrix<- rbind(Item_NO,tem_name,deparse.level = 1)

[,1]   [,2]     [,3]     [,4]  
[1,] "1"    "2"      "3"      "4"   
[2,] "MILK" "CHEESE" "BUTTER" "CURD"
 

                    [,1]   [,2]     [,3]     [,4]  
Item_NO   "1"    "2"      "3"      "4"   
Item_name "MILK" "CHEESE" "BUTTER" "CURD"
 

cbind()

matrix<- cbind(Item_NO, item_name,deparse.level = 0)

 

 

matrix<- cbind(Item_NO,Item_name, deparse.level = 1)
 

        [,1] [,2]    
[1,] "1"  "MILK"  
[2,] "2"  "CHEESE"
[3,] "3"  "BUTTER"
[4,] "4"  "CURD"  

    Item_NO Item_name
[1,] "1"     "MILK"   
[2,] "2"     "CHEESE" 
[3,] "3"     "BUTTER" 
[4,] "4"     "CURD"   
 

 

NOTE : Both cbind() and rbind() are built-in functions in R to create matrices by combining several vectors of the same length.

The deparse.level values 0 or 1 determine the labels to construct (column labels for cbind or row labels for rbind).

What are the matrices of the matrix in R?

Matrices refer to the standards used while creating a Matrix. Using the syntax for creating a matrix, a matrix m is created.


m <- matrix(1:15, 
            nrow=5,
            ncol=3,
            byrow=FALSE)
 

The following are the metrics of a matrix

  • data  such as vector
  • nrow represents number of rows
  • ncol represents the number of columns

The matrix m is 


       [,1] [,2] [,3]
[1,]    1    6   11
[2,]    2    7   12
[3,]    3    8   13
[4,]    4    9   14
[5,]    5   10   15

Examples of matrix functions are shown below


nrow(m)
ncol(m)
dim(m)
 

It produces an output


> print(nrow(m))
[1] 5
> print(ncol(m))
[1] 3
> print(dim(m))
[1] 5 3

How to name columns and rows of the matrix in R?

Consider the above-created MATRIX using the matrix() function, let us give names to  the rows and columns of MATRIX using the following syntax

To name rows of the matrix


rownames(<MATRIX>) = c(<name1>,<name2>………)
 

Example: rownames(MATRIX) =c("row_1","row_2","row_3")

To name coloumn of the matrix


colnames(<MATRIX>)=c(<name1>,<name2>…….)
 

Example: colnames(MATRIX)=c("col_1","col_2","col_3","col_4","col_5")

Let us see a simple program to understand the naming of matrix rows and columns

Program to name rows and columns of the matrix


#created a matrix named MATRIX 
#MATRIX is 3 by 5 with data distributed row wise 
MATRIX <- matrix(1:15, nrow=3, ncol=5,byrow =TRUE)

#create names to rows
rownames(MATRIX)=c("row_1","row_2","row_3")

#create names to columns
colnames(MATRIX)=c("col_1","col_2","col_3","col_4","col_5")

cat("The MATRIX after naming is \n")
print(MATRIX)

 

Output:


The MATRIX after naming is 
       col_1 col_2 col_3 col_4 col_5
row_1     1     2     3     4     5
row_2     6     7     8     9    10
row_3    11    12    13    14    15

Let us see how these code looks in RStudio

Program to name rows and columns of the matrix

What are dimnames() in R?

In R you can name matrix rows and columns using dimnames() function. It is a built in function in R to set values to row and columns as well as to get names of rows and columns.


dimnames() <- list(c(), c())
 

Start by creating a matrix using matrix() function


m <- matrix(1:15, 
             nrow=5,
             ncol=3,
             byrow=FALSE)