Hampir semua bahasa pemrograman menggunakan fungsi untuk memberikan perintah kepada komputer dalam menjalankan program. Fungsi terdiri dari beberapa perintah yang menerima masukan (input), menggunakannya sebagai bahan dalam perhitungan, dan kemudian mengeluarkan hasil (result).
Sebagai perkenalan, disajikan fungsi untuk menghitung sejumlah bilangan ganjil yang ada dalam sebuah vektor. Fungsi ini diberi nama cacahganjil()
. Penulisan fungsi lebih baik dilakukan menggunakan editor teks daripada dilakukan melalui konsol interaktif R. Lebih mudah mengeditnya kalau terjadi kesalahan.
# mencacah bilangan ganjil yang ada pada vektor x > cacahganjil <- function(x) { + k <- 0 + for (n in x) { + if (n %% 2 == 1) k <- k+1 # %% merupakan operasi modulo + } + return(k) + } > cacahganjil(c(1,3,5)) [1] 3 > cacahganjil(c(1,2,3,7,9)) [1] 4
Pertama kita memberitahu R bahwa akan dibuat sebuah fungsi dengan sebuah input x
. Fungsi tersebut diberi nama cacahganjil. Pada konsol interaktif R, lambang prompt (“>”) diganti dengan “+” karena konsol menganggap perintah belum selesai, lihat tanda kurung buka “{“ yang belum berkawan dengan tanda kurung tutup “}”. Selama belum ditutup, tanda “+” akan selalu muncul di baris yang baru.
Setelah fungsi dituliskan, kita gunakan fungsi tersebut untuk mengevaluasi vektor (1,3,5)
. Karena pada vektor tersebut ada 3 bilangan ganjil, maka hasil yang ditampilkan adalah 3. Pada evaluasi kedua pada vektor (1,2,3,7,9)
hasilnya adalah 4.
Cara kerja fungsi ini adalah memeriksa semua nilai pada vektor x
, dengan proses looping. Kemudian memeriksa masing-masing nilai dengan operasi modulo, yaitu operasi sisa pembagian. Contoh, sisa pembagian dari 34 dibagi 7 adalah 6.
> 34 %% 7 [1] 6
Apa yang dilakukan oleh fungsi dengan kode berikut?
for (n in x) { if (n %% 2 == 1) k <- k+1
Pertama memberikan n
nilai dari x[1]
, dan kemudian memeriksa nilai tersebut sebagai ganjil atau genap. Selanjutnya menambahkan pencacahan pada variabe k
dengan nilai 1 apabila ganjil. Nilai k
akan terus bertambah apabila ditemukan angka ganjil.
Beberapa programmer mungkin akan membuat baris seperti berikut
for (i in 1:length(x)) { if (x[i] %% 2 == 1) k <- k+1
Perintah tersebut dapat berjalan di R kecuali apabila panjang x
adalah 0. Pertama kode ini akan mengambil nilai panjang dari vektor x
. misalkan panjang vektor adalah 25, maka indeks i
akan berjalan dari 1, 2, 3,…,25, dan fungsi akan mengambil nilai-nilai dari x
sesuai dengan indeks. Tetapi hal utama dalam pemrograman R adalah berusaha menghindari looping, bila tidak bisa, sedapat mungkin looping dilakukan dengan cara yang sesederhana mungkin. Seperti pada contoh fungsi cacahganjil kita tidak perlu menghitung panjang vektor, menggunakan indeks array k
mengakses nilai-nilai pada vektor.
Di akhir fungsi, diberikan nilai k sebagai result. Baris return (k)
bisa diganti dengan k saja. Fungsi pada R akan memberikan nilai pada variabel yang terakhir dihitung dalam fungsi sebagai keluaran (result), tanpa perlu secara eksplisit kita nyatakan pada akhir fungsi. Tapi lebih baik kita nyatakan secara eksplisit. Lebih mudah dibaca.