How to use matrix in R

base-r
matrix
Master matrix in R programming with clear examples. Complete tutorial covering syntax, use cases, and best practices.
Published

February 21, 2026

Introduction

A matrix in R is a two-dimensional data structure that stores elements of the same data type in rows and columns. Matrices are essential for mathematical operations, statistical calculations, and data manipulation tasks where you need efficient storage and computation of rectangular data arrays.

Getting Started

library(tidyverse)

Example 1: Basic Usage

The Problem

We need to create and manipulate a basic matrix structure to understand fundamental matrix operations. This involves creating matrices from scratch and performing basic indexing operations.

Step 1: Create a simple matrix

We’ll start by creating a matrix using the matrix() function with basic numeric data.

# Create a 3x3 matrix with numbers 1-9
basic_matrix <- matrix(1:9, nrow = 3, ncol = 3)
print(basic_matrix)

This creates a matrix filled by columns (default behavior) with our specified dimensions.

Step 2: Create matrix filled by rows

Sometimes we want to fill the matrix row-wise instead of column-wise for better data organization.

# Create matrix filled by rows
row_matrix <- matrix(1:9, nrow = 3, ncol = 3, byrow = TRUE)
print(row_matrix)

The byrow = TRUE parameter changes the filling direction, making data flow left-to-right across rows.

Step 3: Access matrix elements

Understanding how to extract specific elements, rows, or columns is crucial for matrix manipulation.

# Access specific elements and subsets
element <- basic_matrix[2, 3]  # Row 2, Column 3
first_row <- basic_matrix[1, ]  # Entire first row
second_col <- basic_matrix[, 2]  # Entire second column
print(list(element, first_row, second_col))

Matrix indexing uses [row, column] notation, where leaving one dimension empty selects the entire row or column.

Example 2: Practical Application

The Problem

Let’s analyze the mtcars dataset by creating correlation matrices to understand relationships between vehicle characteristics. We’ll transform the data into matrix format and perform mathematical operations to reveal patterns in fuel efficiency, weight, and horsepower.

Step 1: Extract numeric data as matrix

We need to convert specific columns from mtcars into a matrix format for mathematical analysis.

# Select key variables and convert to matrix
car_vars <- mtcars |>
  select(mpg, wt, hp, qsec) |>
  as.matrix()

print(head(car_vars))

This creates a numeric matrix containing miles per gallon, weight, horsepower, and quarter-mile time data.

Step 2: Calculate correlation matrix

Matrix operations allow us to efficiently compute correlations between all variable pairs simultaneously.

# Calculate correlation matrix
correlation_matrix <- cor(car_vars)
print(round(correlation_matrix, 3))

The correlation matrix shows relationships between variables, with values ranging from -1 to 1 indicating strength and direction of relationships.

Step 3: Perform matrix arithmetic

We can demonstrate matrix operations by standardizing our data using matrix calculations.

# Standardize the matrix (subtract mean, divide by sd)
means <- colMeans(car_vars)
sds <- apply(car_vars, 2, sd)
standardized <- scale(car_vars)
print(head(standardized))

This standardization process transforms all variables to have mean 0 and standard deviation 1, making them comparable.

Step 4: Matrix multiplication example

Matrix multiplication is fundamental for many statistical calculations and transformations.

# Create transformation matrix and apply it
transform_matrix <- matrix(c(2, 0, 0, 1.5), nrow = 2)
sample_data <- car_vars[1:2, 1:2]
transformed <- sample_data %*% transform_matrix
print(transformed)

The %*% operator performs proper matrix multiplication, following mathematical rules for matrix algebra.

Summary

  • Matrices store homogeneous data in rectangular format, perfect for mathematical operations and statistical calculations
  • Use matrix() function with nrow, ncol, and byrow parameters to create matrices with desired structure
  • Access matrix elements using [row, column] indexing, leaving dimensions empty to select entire rows or columns
  • Matrix operations like cor(), %*%, and scale() enable efficient mathematical computations on entire datasets
  • Real-world applications include correlation analysis, data transformation, and statistical modeling with datasets like mtcars