Part 6 — Kontrol Alur: Loop

for, while, break/next, dan kapan menggunakan loop vs vektorisasi di R.
Fundamental
Kontrol Alur
Diterbitkan

26 Februari 2026

Fundamental Series — Part 6 of 20

Loop menjalankan blok kode berulang kali. Di R, loop ada tempatnya, tapi sering kali vektorisasi lebih baik.


for Loop

for (i in 1:5) {
  cat("Iterasi:", i, "\n")
}

Loop Over Vektor

kota <- c("Jakarta", "Bandung", "Surabaya")

for (k in kota) {
  cat("Kota:", k, "\n")
}

Simpan Hasil Loop

x <- c(4, 9, 16, 25)
hasil <- numeric(length(x))    # pra-alokasi vektor kosong

for (i in seq_along(x)) {
  hasil[i] <- sqrt(x[i])
}
hasil   # 2 3 4 5
TipPra-alokasi!

Selalu buat vektor kosong sebelum loop (numeric(), character(), vector()). Menambah elemen satu per satu dengan c() di dalam loop sangat lambat di R.


while Loop

x <- 1
while (x <= 5) {
  cat(x, "")
  x <- x + 1
}
# 1 2 3 4 5
PeringatanHati-hati Infinite Loop!

Jika kondisi while tidak pernah FALSE, loop berjalan selamanya. Tekan Esc (RStudio) atau Ctrl+C untuk menghentikan.


break dan next

# break — hentikan loop
for (i in 1:10) {
  if (i == 5) break
  cat(i, "")
}
# 1 2 3 4

# next — lewati iterasi saat ini
for (i in 1:10) {
  if (i %% 2 == 0) next    # lewati genap
  cat(i, "")
}
# 1 3 5 7 9

Loop vs Vektorisasi

Di R, vektorisasi hampir selalu lebih cepat dan bersih:

x <- 1:1000000

# ❌ Loop — lambat
hasil <- numeric(length(x))
for (i in seq_along(x)) {
  hasil[i] <- x[i]^2
}

# ✅ Vektorisasi — cepat & ringkas
hasil <- x^2

Kapan Pakai Loop?

  • Iterasi memiliki dependensi (hasil iterasi ke-i bergantung pada iterasi ke-(i-1))
  • Operasi side effects (baca/tulis file, print, plot)
  • Logika yang terlalu kompleks untuk divektorisasi

Loop Over Data Frame

data(mtcars)

# Loop per kolom
for (col in names(mtcars)) {
  if (is.numeric(mtcars[[col]])) {
    cat(col, ": mean =", mean(mtcars[[col]]), "\n")
  }
}

Latihan

BahayaLatihan 6.1 — For Loop
# 1. Cetak bilangan 1-20 yang habis dibagi 3
# 2. Hitung jumlah (sum) bilangan 1-100 menggunakan loop
#    Verifikasi dengan sum(1:100)
BahayaLatihan 6.2 — While Loop
# Simulasi: mulai dengan saldo = 1000
# Setiap iterasi, saldo dikali faktor random antara 0.8 dan 1.2
# Hentikan ketika saldo < 500 atau > 2000
# Berapa iterasi yang diperlukan?

set.seed(42)
saldo <- 1000
iterasi <- 0
# ... tulis while loop
BahayaLatihan 6.3 — Loop vs Vektorisasi
# Diberikan vektor:
x <- rnorm(10000)

# 1. Hitung mean(x) menggunakan for loop
# 2. Bandingkan hasilnya dengan mean(x) bawaan
# 3. Bandingkan kecepatan: system.time({ ... })

Ringkasan

Konsep Sintaks Keterangan
for for (i in 1:n) { } Loop dengan counter/vektor
while while (cond) { } Loop sampai kondisi FALSE
break break Hentikan loop
next next Lewati iterasi saat ini
Vektorisasi x^2 Lebih cepat & idiomatic R
Pra-alokasi numeric(n) Buat vektor kosong sebelum loop

Sebelumnya: Part 5 — Conditional Selanjutnya: Part 7 — Fungsi