Control Flow di dalam R
15.3. Control Flow di dalam R
Barisan perintah dalam R biasanya dieksekusi baris per baris. Dalam R, barisan perintah yang diletakkan didalam tanda kurung { } sebagai satu group dipandang sebagai satu ekspresi tunggal. Barisan ekspresi yang dinyatakan dalam bentuk group ini juga di eksekusi baris per baris. Untuk mengatur proses eksekusi, diperlukan perintah‐perintah control flow. Bentuk control flow ini akan banyak digunakan dalam menulis suatu fungsi yang di bentuk oleh user. Beberapa perintah control flow yang dikenal didalam R akan dibahas dalam bagian ini.
Statemen if Statemen ini mempunyai aturan penulisan
> if (kondisi) {ekspresi}
Perintah ini berarti jika (kondisi) bernilai benar, maka {ekspresi} dilaksanakan, jika (kondisi) bernilai salah, maka {ekspresi} tidak dilaksanakan. Berikut adalah contoh statemen if.
> if (2>3) x=c(1,2,3) >x
Error: object "x" not found
Pada contoh ini, karena kondisi (2>3) bernilai False, maka ekspresi x=c(1,2,3) tidak dieksekusi. Sehingga pada saat nilai x ditampilkan, karena x tidak ada maka keluar pesan Error: object "x" not found. Selanjutnya perhatikan contoh statemen if berikut ini.
> if (2<3) x=c(1,2,3) >x
Pada contoh ini, karena kondisi (2<3) bernilai benar (True), maka ekspresi x=c(1,2,3) dieksekusi, sehingga nilai‐nilai data x dapat ditampilkan.
Statemen if else Statemen ini mempunyai aturan penulisan seperti berikut ini.
> if (kondisi) {ekspresi1} else {ekspresi2}
Perintah ini mempunyai arti jika (kondisi) bernilai benar maka {ekspresi1} yang dilaksanakan, dan jika bernilai salah maka {ekspresi2} yang dilaksanakan. Berikut contoh statemen if else.
> if (2>3) x=c(1,2,3) else x=c(4,5,6) >x [1] 4 5 6
Statemen for
Statemen ini digunakan untuk perulangan. Syntax dasar dari fungsi ini adalah sebagai berikut.
> for (name in expr1) {expr2}
Pada contoh dibawah ini, statemen for akan digunakan untuk menghitung nilai faktorial.
> f=1 > for (i in 1:5) +{ + f=f*i +} >f [1] 120
Pada contoh ini dihitung nilai 5! = 1.2.3.4.5 = 120.
Fungsi break dan next Syntax dari fungsi ini adalah sebagai berikut. break : stop dan keluar loop yang sedang dieksekusi.
next : stop iterasi yang sedang berjalan dan langsung mulai iterasi selanjutnya.
Command next dan break pada dasarnya berfungsi untuk mencegah kemungkinan adanya infinitife loop dalam suatu fungsi, seperti dalam suatu loop repeat (yang dalam
R tidak memiliki akhir eksekusi yang alami, sehingga mutlak diperlukan stopping loop dengan perintah break atau next) dan while (yang diperlukan untuk menghentikan perulangan atau loop di satu bagian dari ekspresi dalam loop tanpa melanjutkan ke ekspresi lain di dalam loop ini).
Statemen return dan stop
Kedua bentuk statemen ini digunakan untuk menghentikan eksekusi dari suatu fungsi yang telah diakses dan kembali ke R prompt. Syntaxnya adalah sebagai berikut.
return(expr) : stop fungsi yang sedang diakses atau dievaluasi dan munculkan
output nilai dari expr di prompt.
stop(message) : digunakan untuk memberikan tanda adanya kesalahan dengan menghentikan evaluasi dari fungsi yang sedang diakses dan menampilkan message di prompt sebagai pesan kesalahan dan kembali ke R prompt.
Fungsi return tidak hanya membuat kita berhenti dari loop yang sedang dievaluasi, tetapi juga dari fungsi yang sedang diakses. Jadi berbeda dengan bentuk break atau next yang tidak menghentikan eksekusi fungsi.
Statement repeat Syntax dasar dari statemen ini adalah sebagai berikut.
> repeat {expr}
Perintah repeat pada R merupakan perintah ynag mengakibatkan perulangan atau looping tiada henti. Oleh karena itu, penggunaan repeat memerlukan penambahan perintah untuk menghentikan perulangan. Perintah ini bisa menggunakan statemen if yang dikombinasikan dengan break. Berikut ini adalah contoh untuk menghitung n! dengan menggunakan repeat.
> f=1 > i=0 > repeat +{ + i=i+1 + f=f*i + if (i==5) break +} >f [1] 120
Statement while
Statemen while merupakan statemen untuk perulangan, dengan syntax sebagai berikut.
> while (condition) expr
Sebagai contoh, akan dibuat perintah untuk menghitung nilai n!.
> f=1 > i=0 > while (i<5) +{ + i=i+1 + f=f*i +} >f [1] 120