Select Page

# How to Solve R Error: Incorrect number of subscripts on matrix

by | Programming, R, Tips

This error occurs when you try to assign a value to a position in a vector but have a comma next to the position. R interprets the comma as trying to assign a value to a row or column position in a matrix. You can solve this error by removing the comma. For example,

```x <- c(2, 4, 6, 8, 10, 12, 14)

x[1] <- 20```

This tutorial will go through the error in detail with code examples.

## Example #1

Let’s look at an example to reproduce the error. First, we will define a vector with seven values:

`x <- c(2, 4, 6, 8, 10, 12, 14)`

Next, we will try to assign the value `76` to the fourth element in the vector:

`x[4, ] <- 76`

Let’s run the code to see what happens:

`Error in x[4, ] <- 22 : incorrect number of subscripts on matrix`

The error occurs because we put a comma after the position. We can use the comma syntax to handle 2-dimensional data structures like a matrix. For example,

```mat = matrix(rep(0,5), nrow=5, ncol=5)
mat```
```     [,1] [,2] [,3] [,4] [,5]
[1,]    0    0    0    0    0
[2,]    0    0    0    0    0
[3,]    0    0    0    0    0
[4,]    0    0    0    0    0
[5,]    0    0    0    0    0```

The syntax `mat[i,]` returns the ith row of the matrix and `mat[,i]` returns the ith column of the matrix.

`x`
` [1] 0 0 0 0 0 0 0 0 0 0`

The vector `x` is one-dimensional, and therefore, the comma syntax is not valid.

### Solution

We can solve the error by removing the comma. Let’s look at the revised code.

```x <- c(2, 4, 6, 8, 10, 12, 14)

x[4] <- 76

x```

Let’s run the code to get the result:

```[1]  2  4  6 76 10 12 14
```

We successfully assigned the value `76` to the fourth value in the matrix.

## Example #2

Let’s look at a second example where we try to replace the values in a vector using a `for` loop.

```# Define vector

x <- rep(1,10)

# Attempt to replace values in vector with zero

for (i in 1:length(x)) {

x[i,] = 0

}```

Let’s run the code to see what happens:

`Error in x[i, ] <- 0 : incorrect number of subscripts on matrix`

The error occurs because we included a comma when trying to assign zeros to the vector.

### Solution

We can solve this error by removing the comma

```# Define vector of ones

x <- rep(1,10)

# Attempt to replace values in vector with zeros

for (i in 1:length(x)) {

x[i] = 0

}

x```

Let’s run the code to see the result:

`[1] 0 0 0 0 0 0 0 0 0 0`

We successfully replaced the values in the vector with zeros.

## Assigning Values to a Matrix

Let’s look at an example of assigning values to a matrix using the comma syntax.

```mat = matrix(rep(0,5), nrow=5, ncol=5)

for(i in 1:5)
{
mat[i,] <- 98
}

mat```
```     [,1] [,2] [,3] [,4] [,5]
[1,]   98   98   98   98   98
[2,]   98   98   98   98   98
[3,]   98   98   98   98   98
[4,]   98   98   98   98   98
[5,]   98   98   98   98   98```

## Summary

Congratulations on reading to the end of this tutorial!

For further reading on R-related errors, go to the articles:

Go to the online courses page on R to learn more about coding in R for data science and machine learning.

Have fun and happy researching!