This error occurs when you attempt to subscript a data frame that contains NA values. You can solve this error by excluding the NA values during the subscript operation, for example:
data[data$col1<0 & !is.na(data$col1),]$col2
This tutorial will go through the error in detail and how to solve it with code examples.
Example
Consider the following 100 row data frame:
set.seed(0) data <- data.frame(x=c(NA, rnorm(99)), y=c(1:5)) head(data)
The first variable contains an NA
value and samples from the normal distribution. The second variable has five integer values that serve as categories. Let’s look at the head of the data frame:
x y 1 NA 1 2 1.2629543 2 3 -0.3262334 3 4 1.3297993 4 5 1.2724293 5 6 0.4146414 1
Next, we will try to replace the value in the x
column that are less than zero with zero.
data[data$x<0,]$x <- 0
Let’s run the code to see the result:
Error in `[<-.data.frame`(`*tmp*`, data$x < 0, , value = list(x = c(0, : missing values are not allowed in subscripted assignments of data frames
The error occurs because the x
column contains NA
values.
Solution
We can solve this error by using the is.na
function in the subscript operation.
data[data$x<0 & !is.na(data$x),]$x <- 0 head(data,n=20)
By using !is.na()
we are excluding the NA
values during the subscript operation. Let’s run the code to see the result:
x y 1 NA 1 2 1.2629543 2 3 0.0000000 3 4 1.3297993 4 5 1.2724293 5 6 0.4146414 1 7 0.0000000 2 8 0.0000000 3 9 0.0000000 4 10 0.0000000 5 11 2.4046534 1 12 0.7635935 2 13 0.0000000 3 14 0.0000000 4 15 0.0000000 5 16 0.0000000 1 17 0.0000000 2 18 0.2522234 3 19 0.0000000 4 20 0.4356833 5
We successfully substituted the values less than zero with zero in the x column.
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 in file(file, “rt”) cannot open the connection
- How to Solve R Error: aesthetics must be either length 1 or the same as the data
- How to Solve R Error: continuous value supplied to discrete scale
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.