Bagian ini akan membahas bagaimana kita dapat membuat fungsi kustom kita sendiri di R untuk mengorganisir kode dan membuatnya dapat digunakan kembali, serta bagaimana mengontrol alur eksekusi program menggunakan pernyataan kondisional dan perulangan.
Pernyataan percabangan memungkinkan program untuk membuat keputusan dan menjalankan blok kode yang berbeda berdasarkan kondisi tertentu. Di R, ini dilakukan menggunakan pernyataan if, else if, dan else.
Sintaks Dasar if:
if (kondisi) {
# Kode yang akan dieksekusi jika kondisi TRUE
}
Sintaks Dasar if-else:
if (kondisi) {
# Kode jika kondisi TRUE
}
else {
# Kode jika kondisi FALSE
}
Sintaks Dasar if-else if-else:
if (kondisi1) {
# Kode jika kondisi1 TRUE
}
else if (kondisi2) {
# Kode jika kondisi2 TRUE
}
else {
# Kode jika tidak ada kondisi yang TRUE
}
Contoh Penggunaan Percabangan:
nilai_ujian <- 75
if (nilai_ujian >= 80) {
print("Anda mendapatkan nilai A")
}
else if (nilai_ujian >= 70) {
print("Anda mendapatkan nilai B")
}
else if (nilai_ujian >= 60) {
print("Anda mendapatkan nilai C")
}
else {
print("Anda mendapatkan nilai D")
}
Contoh lain: mengecek bilangan genap atau ganjil
bilangan <- 7
if (bilangan %% 2 == 0) {
print(paste(bilangan, "adalah bilangan genap"))
}
else {
print(paste(bilangan, "adalah bilangan ganjil"))
}
2. Perulangan (Looping) di R
Perulangan digunakan untuk menjalankan blok kode berulang kali. R menyediakan beberapa jenis perulangan, yang paling umum adalah for loop dan while loop.
a. for Loop
for loop digunakan ketika kita tahu berapa kali ingin mengulang blok kode, biasanya untuk setiap elemen dalam sebuah urutan (vektor, list, dan lain-lain).
Sintaks Dasar for Loop:
for (variabel_iterasi in urutan) {
# Kode yang akan dieksekusi
}
Contoh Penggunaan for Loop:
# Mencetak angka dari 1 sampai 5
for (i in 1:5) {
print(i)
}
# Mengulang melalui elemen vektor karakter
buah_buahan <- c("apel", "jeruk", "mangga")
for (buah in buah_buahan) {
print(paste("Saya suka", buah))
}
# Menghitung jumlah elemen dalam vektor
angka_data <- c(10, 20, 30, 40, 50)
jumlah_total <- 0
for (nilai in angka_data) {
jumlah_total <- jumlah_total + nilai
}
print(paste("Jumlah total:", jumlah_total))
b. while Loop
while loop digunakan ketika kita ingin mengulang blok kode selama suatu kondisi tertentu bernilai TRUE. Perulangan akan terus berlanjut sampai kondisi menjadi FALSE.
Sintaks Dasar while Loop:
while (kondisi) {
# Kode yang akan dieksekusi
# Pastikan ada perubahan yang membuat kondisi akhirnya FALSE
}
Contoh Penggunaan while Loop:
# Mencetak angka selama kurang dari 5
counter <- 1
while (counter < 5) {
print(counter)
counter <- counter + 1 # Penting: pastikan counter bertambah agar loop berhenti
}
Contoh lain: mencari angka pertama yang lebih besar dari 10
angka_acak <- c(3, 8, 12, 5, 15)
i <- 1
while (angka_acak[i] <= 10 && i <= length(angka_acak)) {
i <- i + 1
}
if (i <= length(angka_acak)) {
print(paste("Angka pertama yang lebih besar dari 10 adalah:", angka_acak[i]))
}
else {
print("Tidak ada angka yang lebih besar dari 10 ditemukan.")
}
3. Fungsi (Function) di R
Fungsi adalah blok kode yang terorganisir dan dapat digunakan kembali yang melakukan tugas tertentu. Fungsi membantu dalam modularitas kode, mengurangi pengulangan, dan membuat program lebih mudah dikelola. R memiliki banyak fungsi bawaan, tetapi kita juga dapat membuat fungsi kustom kita sendiri.
Sintaks Dasar Membuat Fungsi Kustom :
nama_fungsi <- function(argumen1, argumen2, ...) {
# Blok kode fungsi
# ...
return(nilai_kembalian) # Opsional: mengembalikan nilai
}
- nama_fungsi: Nama yang kita berikan untuk fungsi.
-
function(): Kata kunci yang menunjukkan bahwa kita mendefinisikan sebuah fungsi.
-
argumen1, argumen2, …: Input yang diterima fungsi. Ini opsional.
-
return(): Pernyataan opsional yang digunakan untuk mengembalikan nilai dari fungsi. Jika tidak ada return(), fungsi akan mengembalikan hasil dari ekspresi terakhir yang dieksekusi.
Contoh Membuat dan Menggunakan Fungsi:
# Fungsi sederhana untuk menyapa nama
sapa_nama <- function(nama) {
pesan <- paste("Halo,", nama, "! Selamat datang di R.")
return(pesan)
}
# Memanggil fungsi
print(sapa_nama("Budi"))
print(sapa_nama("Siti"))
# Fungsi untuk menghitung luas persegi panjang
hitung_luas_persegi <- function(panjang, lebar) {
luas <- panjang * lebar return(luas)
}
# Memanggil fungsi dengan argumen
luas_tanah <- hitung_luas_persegi(10, 5)
print(paste("Luas tanah adalah:", luas_tanah, "meter persegi."))
# Fungsi dengan nilai default untuk argumen
hitung_pajak <- function(harga, pajak_rate = 0.10) {
total_pajak <- harga * pajak_rate
total_bayar <- harga + total_pajak
return(total_bayar)
}
print(paste("Total bayar dengan pajak default:", hitung_pajak(100)))
print(paste("Total bayar dengan pajak 5%:", hitung_pajak(100, 0.05)))
4. Fungsi apply Family
Fungsi-fungsi dalam “apply family” di R adalah alat yang sangat efisien untuk menerapkan fungsi ke margin (baris atau kolom) dari array, matriks, atau elemen-elemen dari list/vektor. Mereka seringkali lebih cepat dan lebih ringkas daripada menggunakan perulangan eksplisit (for loop) untuk tugas-tugas tertentu.
lapply(): Menerapkan fungsi ke setiap elemen list atau vektor
lapply() mengembalikan sebuah list yang berisi hasil penerapan fungsi ke setiap elemen input.
Sintaks:
lapply(X, FUN, ...)
- X: Objek (list atau vektor) yang akan diiterasi.
-
FUN: Fungsi yang akan diterapkan ke setiap elemen.
Contoh lapply():
list_angka <- list(a = 1:3, b = 4:6, c = 7:9) # Menerapkan fungsi sum() ke setiap elemen list hasil_sum_lapply <- lapply(list_angka, sum) print(hasil_sum_lapply) # Output: # $a # [1] 6 # # $b # [1] 15 # # $c # [1] 24 # Menerapkan fungsi sqrt() ke setiap elemen vektor vektor_data <- c(4, 9, 16, 25) hasil_sqrt_lapply <- lapply(vektor_data, sqrt) print(hasil_sqrt_lapply) # Output: # [[1]] # [1] 2 # # [[2]] # [1] 3 # ...
sapply(): Mirip dengan lapply(), tetapi mencoba menyederhanakan hasilnya
sapply() adalah versi lapply() yang lebih “user-friendly”. Jika memungkinkan, sapply() akan menyederhanakan hasil list menjadi vektor atau matriks.
Sintaks:
sapply(X, FUN, ...)
Contoh sapply():
# Menggunakan contoh yang sama dengan lapply() hasil_sum_sapply <- sapply(list_angka, sum) print(hasil_sum_sapply) # Output: # a b c # 6 15 24 hasil_sqrt_sapply <- sapply(vektor_data, sqrt) print(hasil_sqrt_sapply) # Output: # [1] 2 3 4 5
apply(): Menerapkan fungsi ke margin (baris atau kolom) dari matriks atau array
apply() sangat berguna untuk melakukan operasi agregasi pada baris atau kolom matriks/array.
Sintaks:
apply(X, MARGIN, FUN, ...)
-
X: Matriks atau array.
-
MARGIN: 1 untuk menerapkan fungsi ke baris, 2 untuk menerapkan fungsi ke kolom.
-
FUN: Fungsi yang akan diterapkan.
Contoh apply():
matriks_nilai <- matrix(c(80, 90, 75, 85, 92, 88), nrow = 2, byrow = TRUE, dimnames = list(c("Siswa1", "Siswa2"), c("Matematika", "Fisika", "Kimia")))
print(matriks_nilai)
# Menghitung rata-rata nilai per siswa (per baris)
rata_rata_siswa <- apply(matriks_nilai, 1, mean)
print(paste("Rata-rata nilai per siswa:", paste(rata_rata_siswa, collapse = ", ")))
# Menghitung rata-rata nilai per mata pelajaran (per kolom)
rata_rata_mapel <- apply(matriks_nilai, 2, mean)
print(paste("Rata-rata nilai per mata pelajaran:", paste(rata_rata_mapel, collapse = ", ")))
Fungsi-fungsi apply family adalah bagian penting dari pemrograman R yang efisien, memungkinkan kita untuk menulis kode yang lebih bersih dan lebih cepat untuk tugas-tugas manipulasi data yang umum.
Referensi :
- https://bookdown.org/moh_rosidi2610/Metode_Numerik

