Iterasi dan looping sangat penting dalam pemrograman untuk melakukan eksekusi perintah secara berulang.
Iterasi adalah proses eksekusi berulang pada suatu blok kode dalam pemrograman selama kondisi tertentu terpenuhi atau hingga kondisi penghentian tercapai. Dengan iterasi, pengembang dapat mengotomatisasi tugas-tugas repetitif tanpa menulis kode yang sama berulang kali secara manual. Iterasi diimplementasikan melalui mekanisme perulangan (loop), tetapi juga dapat dilakukan secara implisit melalui fungsi-fungsi vektorisasi.
Struktur Looping:
1. for loops
2. while loops
3. repeat-until loops
Sumber : Unikom
for (i in 1:5) {
print(paste("Iterasi ke-", i))
}
## [1] "Iterasi ke- 1"
## [1] "Iterasi ke- 2"
## [1] "Iterasi ke- 3"
## [1] "Iterasi ke- 4"
## [1] "Iterasi ke- 5"
Berikut adalah flowchart sederhana yang menggambarkan alur kerja for loop:
## Warning: package 'DiagrammeR' was built under R version 4.3.3
i <- 1
while (i <= 5) {
print(paste("Iterasi ke-", i))
i <- i + 1
}
## [1] "Iterasi ke- 1"
## [1] "Iterasi ke- 2"
## [1] "Iterasi ke- 3"
## [1] "Iterasi ke- 4"
## [1] "Iterasi ke- 5"
Berikut adalah flowchart sederhana yang menggambarkan alur kerja while loop:
Catatan:
Flowchart for dan while loop memang tampak mirip karena keduanya melakukan proses iterasi dengan pengecekan kondisi sebelum eksekusi blok kode. Perbedaannya, pada for loop inisialisasi, kondisi, dan increment biasanya ditulis dalam satu baris, sedangkan pada while loop increment dilakukan di dalam blok kode secara eksplisit. Namun, secara alur logika, keduanya serupa sehingga flowchart-nya hampir sama.
i <- 1
repeat {
print(paste("Iterasi ke-", i))
i <- i + 1
if (i > 5) {
break
}
}
## [1] "Iterasi ke- 1"
## [1] "Iterasi ke- 2"
## [1] "Iterasi ke- 3"
## [1] "Iterasi ke- 4"
## [1] "Iterasi ke- 5"
Berikut adalah flowchart sederhana yang menggambarkan alur kerja repeat loop:
Di sebuah rumah sakit umum, seorang dokter spesialis penyakit dalam bertugas memantau suhu tubuh 30 pasien rawat inap setiap hari selama 7 hari berturut-turut. Pemantauan ini penting untuk mendeteksi gejala demam atau tanda awal infeksi, khususnya pada pasien pascaoperasi dan pasien rentan.
Untuk mengolah dan menganalisis data suhu harian tersebut secara efisien, dokter meminta bantuan kepada staff IT rumah sakit. Staff IT diminta menggunakan bahasa pemrograman R untuk melakukan berbagai analisis berbasis data suhu tubuh tersebut.
Secara khusus, staff IT diminta untuk:
# Set seed agar data reproducible (hasil sama saat diulang)
set.seed(123)
# Simulasi suhu berdistribusi normal (mean = 36.9, sd = 0.4) sebanyak 7 hari
suhu <- matrix(round(rnorm(30 * 7, mean = 36.9, sd = 0.4), 2), nrow = 30, ncol = 7)
colnames(suhu) <- paste("Hari", 1:7)
rownames(suhu) <- paste("Pasien", 1:30)
# Tampilkan data suhu mingguan
suhu
## Hari 1 Hari 2 Hari 3 Hari 4 Hari 5 Hari 6 Hari 7
## Pasien 1 36.68 37.07 37.05 37.30 36.95 37.22 36.47
## Pasien 2 36.81 36.78 36.70 37.12 36.52 37.21 37.41
## Pasien 3 37.52 37.26 36.77 37.00 36.70 37.03 36.76
## Pasien 4 36.93 37.25 36.49 36.65 36.80 36.50 36.55
## Pasien 5 36.95 37.23 36.47 37.44 37.64 36.85 36.81
## Pasien 6 37.59 37.18 37.02 36.66 36.64 36.79 36.82
## Pasien 7 37.08 37.12 37.08 37.77 36.99 37.13 37.34
## Pasien 8 36.39 36.88 36.92 37.51 36.93 36.75 36.93
## Pasien 9 36.63 36.78 37.27 36.81 36.52 37.29 37.20
## Pasien 10 36.72 36.75 37.72 36.49 36.87 36.75 36.70
## Pasien 11 37.39 36.62 36.70 36.62 37.48 37.32 36.99
## Pasien 12 37.04 36.82 35.98 37.00 37.08 36.48 36.77
## Pasien 13 37.06 36.39 37.30 36.80 36.92 36.40 36.94
## Pasien 14 36.94 37.77 36.62 36.76 36.73 38.20 36.54
## Pasien 15 36.68 37.38 36.62 36.52 36.08 36.73 36.38
## Pasien 16 37.61 36.45 37.31 36.88 37.35 37.02 37.70
## Pasien 17 37.10 36.74 36.79 36.59 36.32 37.15 37.14
## Pasien 18 36.11 36.71 36.41 36.23 37.20 36.71 36.40
## Pasien 19 37.18 37.21 36.97 36.75 37.66 37.11 36.66
## Pasien 20 36.71 36.87 36.84 37.27 36.32 37.05 36.43
## Pasien 21 36.47 37.00 36.90 36.67 37.18 36.81 37.78
## Pasien 22 36.81 36.89 37.05 37.14 36.80 36.93 37.42
## Pasien 23 36.49 36.88 36.75 36.25 36.27 36.89 36.79
## Pasien 24 36.61 37.45 37.16 36.88 36.29 37.75 37.12
## Pasien 25 36.65 36.81 36.81 37.11 36.26 36.60 36.73
## Pasien 26 36.23 37.51 37.03 37.02 36.69 36.46 36.71
## Pasien 27 37.24 36.28 37.34 36.94 36.32 36.92 36.58
## Pasien 28 36.96 37.13 37.07 36.64 37.18 37.02 36.66
## Pasien 29 36.44 36.95 36.77 36.56 37.74 37.07 37.56
## Pasien 30 37.40 36.99 37.36 36.49 36.39 36.72 36.88
suhu_vector <- as.vector(suhu)
hist(suhu_vector, breaks=15, probability=TRUE, col="skyblue",
main="Distribusi Suhu Tubuh Pasien", xlab="Suhu (°C)")
lines(density(suhu_vector), col="darkblue", lwd=2)
abline(v=mean(suhu_vector), col="red", lty=2)
Grafik ini menyajikan distribusi suhu tubuh pasien, menampilkan bagaimana nilai suhu tersebar di antara kelompok pasien yang diamati. Bentuk histogram yang diikuti oleh kurva densitas berwarna biru tua jelas menunjukkan bahwa data suhu tubuh pasien cenderung berdistribusi normal (bell-shaped).
qqnorm(suhu_vector, main="Q-Q Plot Suhu Tubuh")
qqline(suhu_vector, col="red", lwd=2)
Berdasarkan plot Q-Q Suhu Tubuh,sebagian besar titik-titik data cukup mendekati garis lurus. Ini menunjukkan bahwa distribusi data suhu tubuh menyerupai distribusi normal. Namun, ada sedikit penyimpangan di kedua ujungnya, terutama di bagian atas (sekitar 38.0), di mana beberapa titik data berada sedikit di atas garis. Ini bisa mengindikasikan adanya beberapa individu dengan suhu tubuh yang sedikit lebih tinggi atau bahwa distribusi memiliki ekor kanan yang sedikit lebih berat dibandingkan dengan distribusi normal yang sempurna.
rata_suhu <- numeric(nrow(suhu))
for (i in 1:nrow(suhu)) {
rata_suhu[i] <- mean(suhu[i, ])
}
# Tampilkan rata-rata suhu tiap pasien dalam bentuk data frame
data.frame(Pasien = rownames(suhu), Rata_Suhu = rata_suhu)
## Pasien Rata_Suhu
## 1 Pasien 1 36.96286
## 2 Pasien 2 36.93571
## 3 Pasien 3 37.00571
## 4 Pasien 4 36.73857
## 5 Pasien 5 37.05571
## 6 Pasien 6 36.95714
## 7 Pasien 7 37.21571
## 8 Pasien 8 36.90143
## 9 Pasien 9 36.92857
## 10 Pasien 10 36.85714
## 11 Pasien 11 37.01714
## 12 Pasien 12 36.73857
## 13 Pasien 13 36.83000
## 14 Pasien 14 37.08000
## 15 Pasien 15 36.62714
## 16 Pasien 16 37.18857
## 17 Pasien 17 36.83286
## 18 Pasien 18 36.53857
## 19 Pasien 19 37.07714
## 20 Pasien 20 36.78429
## 21 Pasien 21 36.97286
## 22 Pasien 22 37.00571
## 23 Pasien 23 36.61714
## 24 Pasien 24 37.03714
## 25 Pasien 25 36.71000
## 26 Pasien 26 36.80714
## 27 Pasien 27 36.80286
## 28 Pasien 28 36.95143
## 29 Pasien 29 37.01286
## 30 Pasien 30 36.89000
Pada bagian ini, kita akan mencari pasien pertama yang mengalami demam ringan (suhu ≥ 37.5°C) selama minimal 4 hari dalam seminggu. Proses pencarian dilakukan menggunakan struktur perulangan while loop. Loop akan memeriksa setiap pasien satu per satu hingga menemukan pasien yang memenuhi kriteria tersebut, lalu proses pencarian dihentikan.
i <- 1
hasil <- NULL
while (i <= nrow(suhu)) {
if (sum(suhu[i, ] >= 37.5) >= 4) {
hasil <- paste("Pasien", i, "mengalami demam ≥ 4 hari")
break
}
i <- i + 1
}
if (is.null(hasil)) {
cat("Tidak ada pasien yang mengalami demam ≥ 4 hari\n")
} else {
cat(hasil, "\n")
}
## Tidak ada pasien yang mengalami demam ≥ 4 hari
Pada bagian ini, kita akan mencari pasien yang tidak pernah mengalami demam (suhu ≤ 37.5°C) selama seminggu penuh. Proses pencarian dilakukan menggunakan struktur perulangan repeat loop dan akan berhenti setelah ditemukan minimal 10 pasien tanpa demam.
i <- 1
tanpa_demam <- 0
pasien_tanpa_demam <- c()
repeat {
if (sum(suhu[i, ] > 37.5) == 0) {
tanpa_demam <- tanpa_demam + 1
pasien_tanpa_demam <- c(pasien_tanpa_demam, i)
}
if (tanpa_demam >= 10 || i >= nrow(suhu)) {
break
}
i <- i + 1
}
cat("Jumlah pasien tanpa demam ditemukan:", tanpa_demam, "\n")
## Jumlah pasien tanpa demam ditemukan: 10
cat("Pasien tanpa demam ditemukan pada pasien ke:", pasien_tanpa_demam, "\n")
## Pasien tanpa demam ditemukan pada pasien ke: 1 2 4 9 11 12 13 15 17 18
Pemahaman tentang struktur pengulangan di R adalah kunci dalam menyelesaikan masalah analisis data yang memerlukan pengulangan dan evaluasi berulang. Terdapat berbagai jenis struktur perulangan dalam bahasa pemrograman R, diantaranya yakni for loop, while loop, dan repeat loop. Setiap tipe struktur looping ini memiliki fungsi khusus dan metode penerapan yang berbeda. Masing-masing memiliki kegunaan dan cara kerja yang berbeda, namun semuanya berguna untuk melakukan eksekusi perintah secara berulang. Dengan memanfaatkan for loop, while loop, dan repeat loop, proses analisis data dapat dilakukan secara otomatis dengan lebih efisien dan sistematis. Sehingga dengan memahami konsep ini, anda dapat menulis kode yang lebih efisien dan terstruktur.
Dalam Tampilan Website bisa di akses disini: (https://rpubs.com/FahmaZuaf/iterasidanlooping)