Part 7 — Fungsi

Menulis fungsi sendiri, parameter, return value, default argument, dan scope di R.
Fundamental
Fungsi
Diterbitkan

26 Februari 2026

Fundamental Series — Part 7 of 20

Fungsi adalah blok kode yang bisa dipanggil berulang dengan input berbeda. Membuat fungsi sendiri adalah skill fundamental yang membuat kode lebih rapi, reusable, dan mudah di-debug.


Anatomi Fungsi

nama_fungsi <- function(parameter1, parameter2) {
  # body — kode yang dijalankan
  hasil <- parameter1 + parameter2
  return(hasil)
}

Contoh Sederhana

hitung_luas <- function(panjang, lebar) {
  luas <- panjang * lebar
  return(luas)
}

hitung_luas(5, 3)      # 15
hitung_luas(10, 7)     # 70
CatatanReturn Implisit

Di R, fungsi otomatis mengembalikan ekspresi terakhir. return() bersifat opsional:

hitung_luas <- function(panjang, lebar) {
  panjang * lebar    # otomatis di-return
}

Default Arguments

sapa <- function(nama, sapaan = "Halo") {
  paste(sapaan, nama)
}

sapa("Budi")              # "Halo Budi"
sapa("Budi", "Selamat pagi")  # "Selamat pagi Budi"

Multiple Return Values

R tidak punya multiple return — tapi bisa mengembalikan list:

statistik <- function(x) {
  list(
    mean = mean(x),
    sd   = sd(x),
    n    = length(x)
  )
}

hasil <- statistik(c(10, 20, 30, 40, 50))
hasil$mean    # 30
hasil$sd      # 15.81

Scope: Local vs Global

x <- 100    # variabel global

ubah_x <- function() {
  x <- 999  # x lokal — TIDAK mengubah x global
  x
}

ubah_x()    # 999
x           # 100 (tidak berubah!)
PentingFungsi Tidak Mengubah Variabel Luar

Variabel yang dibuat di dalam fungsi bersifat lokal — hanya ada di dalam fungsi. Ini disebut lexical scoping.


Fungsi Anonim (Lambda)

# Fungsi tanpa nama — untuk penggunaan sekali pakai
sapply(1:5, function(x) x^2)
# 1 4 9 16 25

# Sintaks baru R 4.1+
sapply(1:5, \(x) x^2)

Latihan

BahayaLatihan 7.1 — Fungsi Dasar
# 1. Buat fungsi celsius_ke_fahrenheit(c) → (c * 9/5) + 32
# 2. Buat fungsi bmi(berat_kg, tinggi_m) → berat / tinggi^2
# 3. Buat fungsi is_genap(x) → TRUE jika genap, FALSE jika ganjil
BahayaLatihan 7.2 — Fungsi dengan Default
# Buat fungsi standarisasi(x, method = "zscore"):
# - "zscore": (x - mean) / sd
# - "minmax": (x - min) / (max - min)
# Test dengan x = c(10, 20, 30, 40, 50)
BahayaLatihan 7.3 — Fungsi Return List
# Buat fungsi ringkasan(x) yang mengembalikan list:
# - mean, median, sd, min, max, n, n_missing
# Test dengan x = c(5, NA, 10, 15, NA, 20)

Ringkasan

Konsep Keterangan
function(x) { } Membuat fungsi
return(x) Mengembalikan nilai (opsional — R return otomatis)
Default argument f <- function(x, y = 10) { }
Multiple return Kembalikan list(...)
Scope Variabel di fungsi bersifat lokal
\(x) Fungsi anonim (shorthand R 4.1+)

Sebelumnya: Part 6 — Loop Selanjutnya: Part 8 — String & Teks