# NaN in R Explained (Example Code) | is.nan Function, Count, Replace & Remove

In the R programming language, NaN stands for ** Not a Number**.

This article explains how to deal with NaN values in R. This includes the application of the **is.nan R function**.

Let’s dive in.

## When does NaN Occur?

As shown in the following example, we can use R as regular calculator:

5 / 2 # Basic computation in R # 2.5 |

5 / 2 # Basic computation in R # 2.5

However, if we try to run an invalid computation (e.g. 0 / 0), R returns NaN:

0 / 0 # Invalid computation returns NaN # NaN |

0 / 0 # Invalid computation returns NaN # NaN

## How to Find NaN in Data? *[is.nan Function]*

If we have a complex vector, data frame or matrix, it might be complicated to identify the NaN values in our data. In such a case, we can apply the is.nan function.

The is.nan function returns a logical vector or matrix, which indicates the NaN positions in our data.

Consider the following example vector:

x <- c(5, 9, NaN, 3, 8, NA, NaN) # Create example vector in R |

x <- c(5, 9, NaN, 3, 8, NA, NaN) # Create example vector in R

If we apply the is.nan function to this data, R returns a logical vector (i.e. TRUE or FALSE) to the console:

is.nan(x) # Apply is.nan function # FALSE FALSE TRUE FALSE FALSE FALSE TRUE |

is.nan(x) # Apply is.nan function # FALSE FALSE TRUE FALSE FALSE FALSE TRUE

In combination with the which R function, we can print the **positions of our NaN values** to the RStudio console:

which(is.nan(x)) # Get positions of NaN # 3 7 |

which(is.nan(x)) # Get positions of NaN # 3 7

And in combination with the sum function, we can **count the amount of NaN values** in our data:

sum(is.nan(x)) # Count amount of NaN # 2 |

sum(is.nan(x)) # Count amount of NaN # 2

## Remove NaN Values *[!is.nan]*

We can use the is.nan function in its reversed form by typing a bang in front of the function (i.e. !is.nan).

This can be used to exclude NaN values from our data:

x_remove <- x[!is.nan(x)] # Remove NaN from vector x_remove # Print reduced vector to RStudio # 5 9 3 8 NA |

x_remove <- x[!is.nan(x)] # Remove NaN from vector x_remove # Print reduced vector to RStudio # 5 9 3 8 NA

You can read the previous code as follows: *“R, please keep every element of our data that is not NaN“*

## Replace NaN Values

Another alternative is the replacement of NaN values.

With the following R code, we replace NaN with 0:

x_replace <- x # Replicate example vector x_replace[is.nan(x_replace)] <- 0 # Replace NaN with 0 in R x_replace # Print vector with replacement # 5 9 0 3 8 NA 0 |

x_replace <- x # Replicate example vector x_replace[is.nan(x_replace)] <- 0 # Replace NaN with 0 in R x_replace # Print vector with replacement # 5 9 0 3 8 NA 0

However, we could change the NaN values to basically every value we want.

## What’s the Difference Between NaN & NA in R?

You might have noticed that R also uses the NA symbol to display data.

So what is the difference between NaN and NA? Why do we need two different symbols?!

**Definition of NaN:** NaN stands for Not a Number and is always displayed when an invalid computation was conducted.

**Definition of NA:** NA stands for Not Available and is used whenever a value is missing (e.g. due to survey nonresponse).

If you need some more details, you may also have a look at the definitions in the R documentation:

**Figure 1: R Documentations of NaN & NA.**

Furthermore, you can learn more about NA values HERE and you can learn more about the is.na R function HERE.

## Further Resources for the Handling of NaN in R

In case you want to learn more about NaN values in R, I can recommend the following YouTube video of Mr. Math Expert. He shows in the video how to compute the mean of data that contains NaN values.

**Please accept YouTube cookies to play this video.** By accepting you will be accessing content from YouTube, a service provided by an external third party.

If you accept this notice, your choice will be saved and the page will refresh.

In addition, you could have a look at some of the other R tutorials on my website:

This article showed how to apply deal with NaN values and the is.nan function in R. Leave me a comment below in case you have any feedback or questions.

### Statistics Globe Newsletter