Tutorial Membuat Library R Sendiri
Selama bekerja dengan R, saya seringkali mengalami hal ini:
“Eh, kayanya saya pernah bikin fungsi cleaning data buat kasus ini di project bulan lalu deh.”
ATAU
“Eh, kayanya saya pernah bikin fungsi plot grafik untuk data mirip seperti ini di project minggu lalu deh.”
Akibatnya, saya harus selalu melakukan ritual berikut ini:
- Buka folder project lama.
- Buka satu per satu file
.Ratau.qmdsampai ketemu script-nya. - Copy fungsinya.
- Paste ke script baru.
Kalau hanya sekali atau dua kali mungkin tidak masalah tapi kalau hal ini berkali-kali terjadi, lumayan juga effort-nya. Belum lagi kalau saya update fungsinya di satu tempat, script lain yang menggunakan fungsi itu jadi lupa untuk ter-update.
Nah, sebagai pengguna R, solusi paling elegan untuk masalah ini adalah: Membungkus fungsi-fungsi andalan kita menjadi sebuah R libraries.
Hal ini mungkin terdengar intimidating karena terbayang proses yang
rumit. Padahal membuat R library untuk pemakaian pribadi (atau tim
kantor) itu tidak serumit yang dibayangkan. Kali ini saya akan share
cara membungkus fungsi-fungsi yang sering saya pakai menjadi
library(ikanx101).
Tahap I: Persiapan yang Dibutuhkan
Untuk membuat R library, saat ini kita tidak perlu meng-coding struktur folder secara manual. Komunitas R sudah menyediakan tools yang sangat memanjakan kita. Pastikan kalian sudah install dua libraries ini:
install.packages("devtools")
install.packages("usethis")
devtools: Untuk build dan install library kita.usethis: Untuk otomatisasi pembuatan struktur folder dan file (ini game changer-nya).
Tahap 2: Inisiasi Project
Buka R Studio, lalu jalankan perintah ini di console. Ganti
path-nya sesuai keinginan kalian.
# Membuat struktur dasar package
usethis::create_package("~/Documents/ikanx101")
Setelah di-run, R Studio akan otomatis membuka sesi R baru yang
berisi project package kita. Di tab Files, teman-teman akan
melihat struktur folder standar R Package (R/, DESCRIPTION,
NAMESPACE, dll). Jangan pusing dulu, biarkan usethis yang mengurus
ini.
Tahap 3: Masukkan Fungsi Andalan
Sekarang saatnya memasukkan fungsi ke dalam folder library kita.
Misalnya, saya sering bikin plot dengan ggplot2, tapi malas mengetik
theme_minimal() + theme(legend.position = "bottom") + labs(caption = "Dibuat dengan R\nikanx101.com")
berulang-ulang. Oleh karena itu, Saya akan buat theme sendiri.
Jalankan perintah ini di console:
usethis::use_r("tema_plot")
File baru bernama tema_plot.R akan muncul di folder R/. Di file
inilah kita tulis fungsinya.
#' Tema Plot ala Ikanx
#'
#' Fungsi ini adalah shortcut untuk theme_minimal dengan modifikasi font dan legenda.
#'
#' @return ggplot theme object
#' @export
#' @examples
#' \dontrun{
#' ggplot(mtcars, aes(mpg, wt)) + geom_point() + theme_ikanx()
#' }
theme_ikanx <- function() {
ggplot2::theme_minimal() +
ggplot2::labs(caption = "Dibuat dengan R\nikanx101.com")
ggplot2::theme(
legend.position = "bottom",
plot.title = ggplot2::element_text(face = "bold", size = 14),
axis.text = ggplot2::element_text(color = "grey20")
)
}
Perhatikan komentar dengan tanda #' di atas fungsi. Itu adalah
roxygen skeleton. Bagian ini yang nanti akan disulap jadi
dokumentasi (Help page) saat kita ketik ?theme_ikanx.
Kemudian tag @export akan berguna untuk memberi tahu R bahwa
fungsi ini boleh dipakai oleh user. Kalau tidak ada @export,
fungsinya akan jadi internal function (tersembunyi).
Tahap 4: Dokumentasi dan Build
Ini bagian magisnya. Kita tidak perlu menulis file dokumentasi manual. Cukup jalankan:
devtools::document()
Perintah ini akan membaca komentar #' tadi dan membuat file
dokumentasi .Rd secara otomatis.
Terakhir, kita install library-nya ke laptop kita:
devtools::install()
Tunggu sebentar sampai proses selesai kemudian restart R session!
Tahap 5: Uji Coba
Sekarang, coba panggil library buatan sendiri tadi selayaknya kita
memanggil tidyverse.
Ini adalah grafik standar sebelum memanggil library(ikanx101).
library(ggplot2)
library(ikanx101) # Ini dia package kita!
# Coba bikin plot awal
ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +
geom_point()

Sedangkan ini adalah hasil plot dengan theme dari library(ikanx101):
# Coba bikin plot
ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +
geom_point() +
theme_ikanx() + # Memakai fungsi dari package sendiri
labs(title = "Tes Plot dengan Library Ikanx101")

Setiap kali saya butuh theme ini, saya tidak perlu copy-paste kode
panjang lagi dan cukup memanggil library(ikanx101).
Tips Tambahan: Simpan di GitHub
Kalau dibutuhkan, kita bisa menyimpan library buatan kita ini di Github agar orang lain bisa meng-install-nya juga. Ini adalah cara yang termudah daripada mempublikasikannya di CRAN.
Caranya adalah:
devtools::install_github("username_github/nama_repo")
Kesimpulan
Membuat R library sendiri bukan soal gagah-gagahan biar terlihat jago coding tapi ini soal efisiensi dan reproducibility. Mulailah dari fungsi-fungsi kecil yang sering dipakai seperti:
- Fungsi cleaning seperti format mata uang (Rp).
- Fungsi membuat tabulasi dari data frame.
- Fungsi palet warna favorit di
ggplot2.
if you find this article helpful, support this blog by clicking the ads.