Lompati ke konten utama
Modul 3 · Pelajaran 1 dari 25/10 dalam kursus~12 min
Pelajaran modul (1/2)

Fungsi Penulisan

Di R, fungsi adalah warga negara kelas satu (objek memiliki haknya sendiri) dan memungkinkan Anda menyusun kode menjadi blok modular, dapat digunakan kembali, dan terorganisir dengan baik.

Mendefinisikan Fungsi

Untuk mendefinisikan suatu fungsi, gunakan kata kunci function dan tetapkan objek yang dibuat ke variabel (nama fungsi) menggunakan operator penugasan <-:

R
# Simple function definition
greet_user <- function() {
  print("Hello, User!")
}

# Invoking the function
greet_user()

Parameter dan Nilai Pengembalian

Fungsi dapat menerima satu atau lebih parameter. Untuk mengembalikan nilai secara eksplisit, gunakan fungsi return(). Jika return() dihilangkan, R akan secara otomatis mengembalikan nilai ekspresi yang terakhir dievaluasi di badan fungsi.

R
# Function that adds two numbers and returns the result
add_numbers <- function(a, b) {
  sum_result <- a + b
  return(sum_result)
}

total <- add_numbers(5, 7)
print(total) # Prints 12

Argumen Bawaan

Anda dapat menentukan nilai default untuk parameter suatu fungsi. Jika argumen tidak diberikan saat fungsi dipanggil, R akan menggunakan nilai default:

R
# The function uses a default discount rate of 10% (0.10)
apply_discount <- function(price, discount = 0.10) {
  discounted_price <- price * (1 - discount)
  return(discounted_price)
}

# Uses the default (10%)
print(apply_discount(100)) # Prints 90

# Specifies a custom discount (20%)
print(apply_discount(100, 0.20)) # Prints 80

Mengembalikan Banyak Nilai dengan Daftar

Karena fungsi di R hanya bisa mengembalikan satu objek secara langsung melalui return(), jika kita perlu mengembalikan beberapa nilai (mungkin dengan tipe atau panjang berbeda), kita dapat menggabungkannya ke dalam daftar (list):

R
get_stats <- function(v) {
  stats <- list(
    mean_val = mean(v),
    max_val = max(v)
  )
  return(stats)
}

results <- get_stats(c(10, 20, 30))
print(results$mean_val) # Prints 20

Fungsi Anonim dan sapply

Fungsi anonim (fungsi tanpa nama yang ditentukan sebaris) sangat berguna bila dipasangkan dengan fungsi seperti sapply() untuk menerapkan transformasi cepat pada elemen vektor atau daftar.

Di R modern (mulai versi 4.1.0 dan seterusnya), Anda dapat mendefinisikan fungsi anonim menggunakan sintaksis singkat \(x) selain function(x) klasik:

R
v <- c(1, 2, 3)

# Using sapply with a classic anonymous function
sapply(v, function(x) x^2) # 1 4 9

# Using sapply with shorthand syntax (R >= 4.1.0)
sapply(v, \(x) x^2) # 1 4 9

Cobalah sendiri

Latihan#r.m3.l1.e1
Upaya: 0Memuat…

Definisikan fungsi bernama double_value yang menerima argumen tunggal x dan mengembalikan argumen gandanya (x * 2) menggunakan return().

Memuat editor…
Tunjukkan petunjuk

Gunakan sintassi: double_value <- function(x) { return(x * 2) }

Solusi tersedia setelah 3 upaya

Latihan#r.m3.l1.e2
Upaya: 0Memuat…

Definisikan fungsi bernama kalkulasi_area yang menerima dua argumen: lebar dan tinggi. Fungsi tersebut harus mengembalikan produknya menggunakan return().

Memuat editor…
Tunjukkan petunjuk

Tentukan fungsi dengan parameter lebar dan tinggi, dan kembalikan lebar * tinggi.

Solusi tersedia setelah 3 upaya

Latihan#r.m3.l1.e3
Upaya: 0Memuat…

Tentukan fungsi bernama hitung_pajak yang menerima jumlah argumen yang diperlukan dan tingkat argumen opsional dengan nilai default 0,22. Kembalikan jumlah produk * tarif.

Memuat editor…
Tunjukkan petunjuk

Amerika Serikat: hitung_pajak <- fungsi(jumlah, tarif = 0,22) { pengembalian(jumlah * tarif) }

Solusi tersedia setelah 3 upaya

Latihan#r.m3.l1.e4
Upaya: 0Memuat…

Definisikan fungsi bernama analisa_vektor yang menerima vektor v. Fungsi tersebut harus mengembalikan daftar yang berisi dua elemen bernama sum (jumlah vektor, dihitung dengan jumlah(v)) dan len (panjang vektor, dihitung dengan panjang(v)).

Memuat editor…
Tunjukkan petunjuk

Gunakan sintaksis: analisa_vektor <- fungsi(v) { return(daftar(jumlah = jumlah(v), len = panjang(v))) }

Solusi tersedia setelah 3 upaya

Latihan#r.m3.l1.e5
Upaya: 0Memuat…

Mengingat vektor v, gunakan fungsi sapply() dengan fungsi anonim untuk melipatgandakan nilai setiap elemen (kalikan dengan 3). Simpan hasilnya dalam variabel tiga kali lipat.

Memuat editor…
Tunjukkan petunjuk

Gunakan: tiga kali lipat <- sapply(v, function(x) x * 3)

Solusi tersedia setelah 3 upaya