Topik ini membahas cara memanggil fungsi di R, mulai dari anatomi pemanggilan, argumen posisi dan argumen bernama, argumen default, hingga urutan pencocokan argumen yang diterapkan R. Cara membuka dokumentasi resmi sebuah fungsi dengan tanda ? juga dijelaskan. Contoh berfokus pada tiga fungsi yang sering muncul, yaitu mean(), round(), dan paste(). Setelah membacanya, fungsi bawaan dapat dipanggil dengan benar dan dokumentasinya dapat dibaca secara efisien.
Anatomi pemanggilan fungsi#
Fungsi dipanggil dengan menuliskan namanya diikuti kurung, dan nilai yang diberikan di dalam kurung disebut argumen (argument). Pemanggilan berikut menghitung rata-rata lima nilai ujian dengan fungsi mean():
nilai <- c(85, 90, 78, 92, 88)
nama <- c("Ali", "Budi", "Citra", "Dewi", "Eka")
mean(nilai)[1] 86.6Nama fungsi dan kurungnya merupakan satu kesatuan, dan kurung tetap wajib dituliskan sekalipun fungsi tidak membutuhkan argumen, karena tanpa kurung nama itu hanya berupa objek yang mencetak definisi fungsinya. Hasil sebuah fungsi dapat langsung menjadi argumen fungsi lain, sehingga perhitungan bertingkat dapat dirangkai tanpa menyimpan hasil antara:
round(mean(nilai), digits = 0)[1] 87Fungsi terdalam dievaluasi lebih dahulu, kemudian hasilnya diteruskan ke fungsi di luarnya. Pola perangkaian seperti ini digunakan sangat sering dalam analisis data. Argumen bernama digits = 0 pada pemanggilan di atas juga menunjukkan bahwa pemanggilan fungsi dapat dikendalikan lebih teliti, dan mekanismenya dibedah pada bagian-bagian selanjutnya.
Argumen posisi dan argumen bernama#
Dua pemanggilan round() berikut menghasilkan keluaran yang sama:
round(3.14159, 2)
round(digits = 2, x = 3.14159)[1] 3.14
[1] 3.14Pada pemanggilan pertama, argumen dicocokkan menurut posisi: 3.14159 jatuh ke argumen x dan 2 jatuh ke argumen digits. Pada pemanggilan kedua, setiap argumen diberi nama, sehingga urutan penulisannya bebas dan maksud setiap nilai terbaca langsung. Kedua gaya boleh dicampur, dan campuran yang lazim adalah argumen pertama menurut posisi, lalu argumen berikutnya diberi nama, sebagaimana terlihat pada round(mean(nilai), digits = 0). Gaya ini menjaga baris kode tetap ringkas tanpa mengorbankan kejelasan.
Daftar nama argumen dapat dilihat kapan saja melalui args() atau halaman bantuannya. Pada fungsi dengan banyak argumen, penulisan bernama hampir menjadi keharusan, karena pencocokan posisi pada argumen keempat atau kelima mudah tersasar tanpa memberi tanda apa pun. Nama juga membuat keliru ketik mudah ditemukan, karena baris yang memuatnya langsung mencolok.
Argumen default dan args()#
Banyak argumen memiliki nilai bawaan (default) yang digunakan apabila argumennya tidak diberikan. Daftar argumen sebuah fungsi beserta nilai bawaannya dapat dilihat dengan args():
args(mean)
args(round)function (x, ...)
NULL
function (x, digits = 0, ...)
NULLKeluaran args(round) memperlihatkan bahwa round() menerima x dan digits yang bawaannya 0. Itulah sebabnya round(3.14159) membulatkan ke bilangan bulat terdekat tanpa perlu argumen kedua. Tiga titik ... menampung argumen tambahan yang diteruskan ke fungsi di balik layar, misalnya na.rm ketika mean() bertemu data yang memuat NA:
suhu <- c(24, 26, NA, 23)
mean(suhu, na.rm = TRUE)[1] 24.33333Argumen na.rm = TRUE menyuruh mean() mengabaikan elemen NA sebelum menghitung. Mekanisme ... yang lebih rinci termasuk materi penulisan fungsi sendiri, tetapi kemampuan membacanya pada args() sudah cukup untuk tahap ini.
Pencocokan argumen#
R mencocokkan argumen yang diberikan dengan daftar argumen formal sebuah fungsi melalui tiga tahap berurutan: nama yang persis sama (exact match) lebih dahulu, kemudian awalan yang unik (partial matching), dan terakhir menurut posisi. Tahap awalan memungkinkan nama argumen ditulis sebagian, asalkan awalannya tidak ambigu:
round(3.14159, dig = 2)[1] 3.14Awalan dig hanya cocok dengan digits, sehingga pencocokan berhasil dan hasilnya sama dengan penulisan lengkapnya. Apabila satu awalan cocok dengan lebih dari satu argumen, R melaporkan error karena tujuannya ambigu. Kemudahan ini menimbulkan risiko: kode yang bergantung pada awalan dapat berubah arti ketika fungsinya berganti versi. Karena itu, gunakan nama lengkap pada kode yang akan digunakan dalam jangka panjang, dan simpan awalan hanya untuk eksplorasi cepat di konsol.
Membaca dokumentasi dengan tanda ? dan help()#
Setiap fungsi dari paket yang terpasang memiliki halaman bantuan resmi. Halaman itu dibuka dengan mengetik tanda tanya diikuti nama fungsi, misalnya ?mean, atau dengan help("mean") yang memberikan hasil yang sama. Di RStudio halamannya terbuka pada panel Help, sedangkan di terminal teksnya tampil di konsol. Sebagai pencarian yang lebih luas, ??kata menyisir dokumentasi seluruh paket yang terpasang untuk kata yang dicari.
Halaman bantuan tersusun baku dan dibaca menurut bagiannya. Bagian Description merangkum fungsi dalam beberapa kalimat, Usage memuat contoh pemanggilan lengkap dengan nilai bawaannya, Arguments menjelaskan setiap argumen satu per satu, Value menyatakan jenis hasil yang dikembalikan, dan Examples memuat contoh yang dapat disalin ke konsol. Kebiasaan membaca Arguments dan Value menghilangkan tebakan tentang perilaku sebuah fungsi. Sebagai pembanding cepat, args() tetap berguna apabila yang dibutuhkan hanya daftar argumennya, sedangkan halaman bantuan menjadi tempat kembali bila perilakunya perlu dipastikan.
Contoh: mean, round, dan paste#
Fungsi ketiga, paste(), menempelkan beberapa nilai menjadi satu teks dan menjadi contoh yang baik karena argumen bernamanya sangat menentukan hasil:
paste("Nilai", "Ali", 85)
paste("Ali", 85, sep = ": ")[1] "Nilai Ali 85"
[1] "Ali: 85"Pemanggilan pertama menggunakan nilai bawaan argumen sep, yaitu satu spasi, sehingga ketiga nilainya terpisah spasi. Pemanggilan kedua menggantinya dengan ": ". Angka 85 dikonversi menjadi teks secara otomatis sebelum ditempel. Argumen collapse mengubah perilaku paste() pada vektor, yaitu menempel seluruh hasil menjadi satu teks dengan pemisah yang diberikan:
paste(nama, nilai, sep = " = ", collapse = ", ")[1] "Ali = 85, Budi = 90, Citra = 78, Dewi = 92, Eka = 88"Keluaran di atas merangkai lima pasang nama dan nilai menjadi satu teks nilai kelas. Tanpa collapse, paste() tetap tervektorisasi: hasilnya vektor lima teks terpisah, dan argumen sep berlaku pada setiap pasangan. Perilaku ini menegaskan bahwa fungsi teks di R mengikuti aturan vektor yang sama dengan fungsi aritmetika.
Kesalahan umum#
Fungsi yang menerima ... menampung argumen apa pun yang namanya tidak dikenalnya, dan kesalahan ketik pun lolos tanpa suara. Pemanggilan berikut bermaksud memberi sep, tetapi yang ditulis sepp:
paste("Ali", 85, sepp = " = ")[1] "Ali 85 = "Tidak ada pesan error. Argumen sepp diperlakukan sebagai nilai tambahan yang ikut ditempel, sehingga keluarannya salah tanpa peringatan apa pun. Perbaikannya menuntut kebiasaan dua arah: tulis nama argumen dengan lengkap, dan periksa keluaran setiap pemanggilan yang menggunakan argumen bernama. Kesalahan serupa pada fungsi yang tidak menerima ... justru melaporkan error argumen tidak digunakan, sehingga fungsi semacam itu lebih cepat menyingkap salah ketiknya. Kebiasaan yang menyelamatkan adalah melengkapi nama argumen saat menulis dan membaca ulang barisnya sekali sebelum dijalankan. Pelengkapan otomatis pada RStudio menuliskan nama argumen persis sebagaimana terdaftar, sehingga salah ketik seperti ini jarang terjadi bila pelengkapnya digunakan.
Ringkasan#
- Fungsi dipanggil dengan nama dan kurung, dan hasilnya dapat langsung menjadi argumen fungsi lain.
- Argumen dicocokkan menurut urutan tiga tahap: nama yang persis, awalan yang unik, lalu posisi.
args()menampilkan daftar argumen beserta nilai bawaannya, sedangkan?nama_fungsimembuka halaman bantuannya.- Pada fungsi yang menerima
..., salah ketik nama argumen tidak selalu melaporkan error dan dapat merusak keluaran diam-diam.
Referensi#
- R Language Definition — CRAN — Bagian function calls menetapkan urutan pencocokan argumen exact, partial, dan posisi.
- An Introduction to R — CRAN — Memuat pembahasan fungsi, pemanggilannya, dan contoh argumen bernama.
- R for Data Science, edisi ke-2 — Wickham, Çetinkaya-Rundel, Grolemund — Bab functions membiasakan pemanggilan dengan argumen bernama dan pembacaan dokumentasi.