How to Use na.rm in R

Spread the love

Handling missing values is a crucial step in data analysis and pre-processing. The na.rm argument in R provides a straightforward way to manage missing values during calculations. This article offers an in-depth look at how to use na.rm in R, covering everything from basic usage to advanced techniques and best practices.

Understanding Missing Values in R

Before diving into na.rm, it’s essential to understand what missing values are in the context of R. In R, missing values are represented by the symbol NA, which stands for “Not Available.”


x <- c(1, 2, 3, NA, 5)

What Does na.rm Do?

The argument na.rm stands for “NA Remove.” When set to TRUE, this argument tells the function to remove any NA values before performing the operation. The default value is typically FALSE, meaning the function will not remove NA values unless explicitly told to do so.

Basic Usage of na.rm


For instance, if you attempt to sum a vector that contains an NA value, the result will also be NA unless na.rm=TRUE is specified.

x <- c(1, 2, 3, NA, 5)
sum(x) # Returns NA
sum(x, na.rm = TRUE) # Returns 11


Similarly, you can calculate the mean of a vector while ignoring NAs by setting na.rm = TRUE.

mean(x) # Returns NA
mean(x, na.rm = TRUE) # Returns 2.75

Advanced Use Cases

Data Frames and apply( )

You can use na.rm with the apply() function to perform an operation across rows or columns of a data frame.

df <- data.frame(col1 = c(1, 2, NA, 4, 5), col2 = c(NA, 2, 3, 4, 5))
apply(df, 2, mean, na.rm = TRUE)

With dplyr

In the dplyr package, you can use na.rm as part of various summarizing functions.

df %>% summarise(across(everything(), mean, na.rm = TRUE))

Comparison with Other Missing Data Handling Techniques

The na.rm argument is a quick and easy way to handle missing data on-the-fly, but it’s not always the best method. Alternatives include:

  • Substitution: Using ifelse() or replace() to fill in missing values.
  • Imputation: Estimating missing values based on other data points.
  • Complete case analysis: Removing all rows with any missing values using na.omit() or complete.cases().

Performance Considerations

Using na.rm = TRUE generally makes your function calls slightly slower because R has to scan through the data to remove NA values. However, for most practical purposes and reasonably sized data sets, this performance hit is negligible.

Common Pitfalls and How to Avoid Them

  • Overuse: Be cautious about using na.rm = TRUE indiscriminately as it might introduce bias.
  • Ignoring the Cause: It’s crucial to understand why your data has missing values and whether it’s appropriate to simply remove them.


The na.rm argument is a powerful tool for data manipulation in R. It offers a straightforward way to handle missing values, making it easier to perform various operations without getting tripped up by NA values. Understanding when and how to use na.rm effectively will undoubtedly make your data analysis tasks more efficient and accurate.

Posted in RTagged

Leave a Reply