How to use while loop in R

base-r
while loop
Learn how to perform use while loop in R. Step-by-step statistical tutorial with examples.
Published

February 21, 2026

Introduction

While loops in R execute a block of code repeatedly as long as a specified condition remains true. They’re particularly useful when you don’t know in advance how many iterations you’ll need, such as when searching for a value or waiting for a condition to be met.

Getting Started

library(tidyverse)
library(palmerpenguins)

Example 1: Basic Usage

The Problem

We want to understand the fundamental structure of a while loop by creating a simple counter. This will demonstrate how the loop continues until our condition becomes false.

Step 1: Initialize the counter variable

We need to set up a starting value before the loop begins.

# Initialize counter
counter <- 1

This creates our starting point at 1.

Step 2: Create the while loop structure

The while loop checks the condition before each iteration.

# Basic while loop
while (counter <= 5) {
  print(paste("Iteration:", counter))
  counter <- counter + 1
}

The loop prints each iteration number and increments the counter until it reaches 6, then stops.

Step 3: Verify the final state

Let’s check what happened to our counter variable after the loop finished.

# Check final counter value
print(paste("Final counter value:", counter))

The counter now equals 6, which is why the condition counter <= 5 became false and stopped the loop.

Example 2: Practical Application

The Problem

We want to randomly sample penguins from our dataset until we find one with a bill length greater than 50mm. This demonstrates a real-world scenario where we don’t know how many attempts we’ll need.

Step 1: Prepare the dataset and initialize variables

We need to set up our data and tracking variables before starting the search.

# Prepare data and initialize variables
penguins_clean <- penguins |> 
  filter(!is.na(bill_length_mm))

attempts <- 0
found_penguin <- FALSE

This removes missing values and sets up our search tracking variables.

Step 2: Create the search loop

The loop will continue sampling until we find a penguin meeting our criteria.

# Search for penguin with bill length > 50mm
while (!found_penguin && attempts < 100) {
  attempts <- attempts + 1
  sample_penguin <- penguins_clean |> 
    slice_sample(n = 1)
  
  if (sample_penguin$bill_length_mm > 50) {
    found_penguin <- TRUE
  }
}

This samples one penguin at a time and checks if the bill length exceeds 50mm, with a safety limit of 100 attempts.

Step 3: Display the results

Let’s examine what we found and how many attempts it took.

# Display results
if (found_penguin) {
  print(paste("Found penguin after", attempts, "attempts"))
  print(sample_penguin |> 
    select(species, bill_length_mm, bill_depth_mm))
} else {
  print("No penguin found within attempt limit")
}

This shows us the successful penguin data and the number of attempts required.

Step 4: Calculate summary statistics

We can use while loops for iterative calculations like finding running averages.

# Calculate running average of first n penguins
n <- 1
running_avg <- 0

while (n <= 5) {
  current_bill <- penguins_clean$bill_length_mm[n]
  running_avg <- ((n-1) * running_avg + current_bill) / n
  print(paste("Average after", n, "penguins:", round(running_avg, 2)))
  n <- n + 1
}

This demonstrates how while loops can handle iterative mathematical operations.

Summary

  • While loops execute code repeatedly until a condition becomes false, making them ideal for uncertain iteration counts
  • Always initialize variables before the loop and ensure the condition will eventually become false to avoid infinite loops
  • Include safety mechanisms like maximum attempt counters when the stopping condition might never be met
  • While loops work excellently with data sampling and iterative calculations where you need to check conditions repeatedly
  • Remember to modify the condition variable inside the loop body, or the loop will run forever