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 rows`ncol`

- 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 position`n2`

- 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.`Sabby`

and`Larry`

`matrix1[ ,2]`

- access entire elements at**2nd**column i.e.`Larry`

and`Harry`

### 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 columns`rbind()`

- 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 matrix`FALSE`

- 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 returns`TRUE`

`"Kinsley"`

is not present in`matrix1`, so the method returns`FALSE`