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 <-:
# 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.
# 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 12Argumen Bawaan
Anda dapat menentukan nilai default untuk parameter suatu fungsi. Jika argumen tidak diberikan saat fungsi dipanggil, R akan menggunakan nilai default:
# 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 80Mengembalikan 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):
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 20Fungsi 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:
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 9Cobalah sendiri
Definisikan fungsi bernama double_value yang menerima argumen tunggal x dan mengembalikan argumen gandanya (x * 2) menggunakan return().
Tunjukkan petunjuk
Gunakan sintassi: double_value <- function(x) { return(x * 2) }
Solusi tersedia setelah 3 upaya
Definisikan fungsi bernama kalkulasi_area yang menerima dua argumen: lebar dan tinggi. Fungsi tersebut harus mengembalikan produknya menggunakan return().
Tunjukkan petunjuk
Tentukan fungsi dengan parameter lebar dan tinggi, dan kembalikan lebar * tinggi.
Solusi tersedia setelah 3 upaya
Tentukan fungsi bernama hitung_pajak yang menerima jumlah argumen yang diperlukan dan tingkat argumen opsional dengan nilai default 0,22. Kembalikan jumlah produk * tarif.
Tunjukkan petunjuk
Amerika Serikat: hitung_pajak <- fungsi(jumlah, tarif = 0,22) { pengembalian(jumlah * tarif) }
Solusi tersedia setelah 3 upaya
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)).
Tunjukkan petunjuk
Gunakan sintaksis: analisa_vektor <- fungsi(v) { return(daftar(jumlah = jumlah(v), len = panjang(v))) }
Solusi tersedia setelah 3 upaya
Mengingat vektor v, gunakan fungsi sapply() dengan fungsi anonim untuk melipatgandakan nilai setiap elemen (kalikan dengan 3). Simpan hasilnya dalam variabel tiga kali lipat.
Tunjukkan petunjuk
Gunakan: tiga kali lipat <- sapply(v, function(x) x * 3)
Solusi tersedia setelah 3 upaya