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:
- How to Solve R Error: mapping should be created with aes() or aes_()
- How to Solve R Error: Could not find function “%”
- How to Solve R Error in strsplit: non-character argument
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!
Suf is a senior advisor in data science with deep expertise in Natural Language Processing, Complex Networks, and Anomaly Detection. Formerly a postdoctoral research fellow, he applied advanced physics techniques to tackle real-world, data-heavy industry challenges. Before that, he was a particle physicist at the ATLAS Experiment of the Large Hadron Collider. Now, he’s focused on bringing more fun and curiosity to the world of science and research online.