How to Fix: error in lm.fit(x, y, offset = offset, …) : na/nan/inf in ‘y’

This error occurs when the ‘y’ values passed to the lm.fit() function contain NA, NaN, or Inf values. To fix this error, you need to remove the NA, NaN, and Inf values from the ‘y’ variable before calling the lm.fit() function. This can be done using the na.omit() function to remove NA, NaN, and Inf values from the ‘y’ variable. Once this is done, you can re-run the lm.fit() function with the corrected data.


One error you may encounter when using R is:

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  NA/NaN/Inf in 'y'

This error occurs when you attempt to use the function to fit a linear regression model in R, but either the predictor or response variable contains NaN or Inf values.

The following example shows how to fix this error in practice.

How to Reproduce the Error

Suppose we have the following data frame in R that contains information about minutes played and points scored for various basketball players:

#create data frame with some NA, NaN, Inf values
df <- data.frame(minutes=c(4, NA, 28, 12, 30, 21, 14),
                 points=c(12, NaN, 30, Inf, 43, 25, 17))

#view data frame
df

  minutes points
1       4     12
2      NA    NaN
3      28     30
4      12    Inf
5      30     43
6      21     25
7      14     17

Notice that the data frame contains some NaN and Inf values.

Now suppose we attempt to fit a linear regression model using “minutes” as the predictor variable and “points” as the response variable:

#attempt to fit regression model
lm(points ~ minutes, data=df)

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  NA/NaN/Inf in 'y'

We receive an error because there are NaN and Inf values present in the data frame.

How to Fix the Error

It’s worth noting that the NA values in the data frame are not an issue. In fact, R simply ignores the NA values when fitting the linear regression model.

The real issue is caused by the NaN and Inf values.

The easiest way to resolve this issue is to replace the NaN and Inf values with NA values:

#Replace NaN & Inf with NA
df[is.na(df) | df=="Inf"] = NA

#view updated data frame
df

  minutes points
1       4     12
2      NA     NA
3      28     30
4      12     NA
5      30     43
6      21     25
7      14     17

Now we can fit the regression model:

#fit regression model
lm(points ~ minutes, data=df)

Call:
lm(formula = points ~ minutes, data = df)

Coefficients:
(Intercept)      minutes  
      5.062        1.048  

The output shows the of the regression model.

Notice that we don’t receive any error since we replaced the NaN and Inf values in the data frame.

The following tutorials explain how to fix other common errors in R:

x