rowMeans() Function in R

Spread the love

rowMeans() computes the mean (average) of each row in a matrix or data frame. This article will delve deep into this function, providing a comprehensive guide on its usage, potential applications, and the nuances to consider when implementing it in your data analysis tasks.

Basics of rowMeans()

The rowMeans() function calculates the mean of each row in a matrix or data frame.

Here is the basic syntax for the function:

rowMeans(x, na.rm = FALSE, dims = 1)


  • x is the matrix or data frame for which you want to calculate the row means.
  • na.rm is a logical argument that specifies whether NA values should be removed before the calculation. By default, it is set to FALSE, meaning that if any NA values exist in a row, the mean of that row will be NA. If you want to ignore NA values and calculate the mean of the remaining values in the row, set na.rm to TRUE.
  • dims is an optional integer that specifies the dimension over which the mean is calculated.

Applying rowMeans() to a Matrix

The primary use case for rowMeans() is with a matrix of numeric data. Here’s how you can create a matrix and calculate the row means:

# Create a 5x5 matrix
mat <- matrix(1:25, ncol = 5)


# Calculate row means

In this example, rowMeans() computes the mean of each of the five rows in the matrix.

Applying rowMeans() to a Data Frame

The rowMeans() function can also be applied to a data frame, although this isn’t as common because data frames often contain non-numeric data. However, if your data frame only contains numeric data, you can use rowMeans() to calculate the mean of each row.

Here’s an example of how to use rowMeans() with a data frame:

# Create a data frame
df <- data.frame(
  a = 1:5, 
  b = 6:10, 
  c = 11:15


# Calculate row means

In this case, rowMeans() computes the mean of each row in the data frame.

Handling NA Values

rowMeans() has built-in functionality to handle NA values. By default, if a row contains any NA values, the function will return NA for that row’s mean. However, you can change this behavior by setting na.rm = TRUE, which tells the function to ignore NA values and calculate the mean of the remaining values.

Here’s an example:

# Create a matrix with NA values
mat <- matrix(c(1:8, NA, 10:18), nrow = 5)


# Calculate row means with na.rm = FALSE (default)
rowMeans(mat)  # this will return NA for the row with NA values

# Calculate row means with na.rm = TRUE
rowMeans(mat, na.rm = TRUE)  # this will exclude NA values

In the example above, the third row of the matrix contains an NA value. When na.rm = FALSE, rowMeans() returns NA for that row’s mean. However, when na.rm = TRUE, it excludes the NA value and computes the mean of the other numbers in the row.

Working with Non-Numeric Data

It’s important to note that rowMeans() only works with numeric data. If you try to use it with a data frame that contains non-numeric data (such as character strings or factors), it will return an error.

To handle this, you can use the sapply() function to identify numeric columns and apply rowMeans() to them only. Here’s how you can do this:

# Create a data frame with numeric and non-numeric data
df <- data.frame(
  a = 1:5,
  b = 6:10,
  c = letters[1:5]


# Attempt to calculate row means
}, warning = function(w) {
}, error = function(e) {

# Apply rowMeans() to only numeric columns
numeric_columns <- sapply(df, is.numeric)
rowMeans(df[, numeric_columns])

In this case, rowMeans(df) will produce an error because the data frame contains a non-numeric column. The sapply() function is used to determine which columns contain numeric data, and rowMeans() is then applied only to these columns.


The rowMeans() function in R provides a simple, effective way to summarize numeric data by rows, offering insights into the data distribution and helping guide further analysis. However, as with any function, understanding its limitations is crucial to avoid errors and incorrect results.

rowMeans() only works with numeric data and can return NA values when there are NA values present in the row, unless the na.rm argument is set to TRUE. By keeping these nuances in mind, you can leverage the full potential of the rowMeans() function in your data analysis work.

Posted in RTagged

Leave a Reply