PEMROGRAMAN R
Sintaks pemrograman R sangat mudah dipelajari, bahkan untuk pengguna yang tidak
memiliki pengalaman pemrograman sebelumnya. Setelah struktur kontrol pemrograman R dasar
dipahami, pengguna dapat menggunakan bahasa R sebagai environment yang sangat powerful
untuk melakukan analisis kompleks dari hampir semua jenis data..
1. Struktur kontrol keputusan – digunakan untuk memutuskan kode program mana yang
akan dikerjakan berdasarkan suatu kondisi. Struktur control keputusan merupakan
percabangan dalam program, baik percabangan 2 jalur atau lebih. Struktur kontrol
keputusan yang paling umum digunakan dalam R adalah
2. Struktur kontrol pengulangan (loop)– digunakan untuk melakukan pengulangan kode
program. Struktur loop yang paling umum digunakan dalam R adalah for, while,
dan apply. Selain itu ada juga perintah repeat, namun jarang digunakan. Fungsi
break digunakan untuk keluar dari loop, dan selanjutnya menghentikan pengolahan
iterasi saat ini dan kemajuan indeks perulangan.
a) If dan if … else …
Berikut adalah sintaks untuk if statement:
if(cond1=true) { cmd1 }
atau
if(cond1=true) { cmd1 } else { cmd2 }
if statement hanya untuk vector berukuran 1.
Berikut adalah contoh dari if-else:
Contoh 1
> w = 3
> if( w < 5 ) {
+ d=2 }
+ else {
+ d=10 }
[1] 2
Contoh 2
> if(sample(x,1)≤ 10) {
+ print(“x kurang dari sama dengan 10”)}
+ else {
+ print(“x lebih dari 10”) }
[1] “x kurang dari sama dengan 10”
Catatan : perintah sample(x,1) artinya ambil sampel acak dari x sebanyak satu sampel.
b) ifelse
Ifelse dapat digunakan untuk object tipe vector dengan panjang n. Sintaks:
ifelse(test, true_value, false_value)
c) switch
Untuk memilih lebih dari 2 pilihan, kita dapat menggunakan fungsi switch() dimana
input nya adalah berupa expresi dari input yang diinginkan serta pilihan yang tersedia.
Sintaks yang digunakan:
switch(EXPR, ...)
Jika EXPR terisi bilangan integer, maka itu menunjukkan urutan dari pilihan yang
diberikan seperti pada contoh berikut:
Contoh 4
x <- switch(3,
"first",
"second",
"third",
"fourth"
)
> x
[1] "third"
Sedangkan jika input pada EXPR adalah berupa string, maka akan dicocokkan dengan
nama pilihan yang tersedia, seperti contoh berikut:
Contoh 5
d) for
Loop ini dikendalikan oleh sebuah vektor perulangan. Sedangkan jumlah iterasi loop
didefinisikan dengan jumlah nilai yang disimpan dalam vektor perulangan dan akan
diproses dalam urutan yang sama seperti yang disimpan dalam vektor perulangan.
Sintaks:
for (vector counter)
{
Statements
}
Contoh 6
> h <- seq(from=1, to=10)
> s <- c() ## definisikan objek “s”
> for(i in 1:10) ## lakukan iterasi sebanyak 10x
+ {
+ ## memasukkan nilai pada objek h ke objek s
+ s[i] <- h[i] * 10
+ }
> s
[1] 10 20 30 40 50 60 70 80 90 100
Kita dapat juga memasukkan nilai iterasi per baris dari sebuah matrix seperti contoh
dibawah ini:
Contoh 7
> ## 1. menghitung kuadrat
> sqr <- seq(1, 10, by=2)
> sqr
[1] 1 3 5 7 9
> res <- NULL ## definisikan vector hasil
> resMat <- matrix(NA,5,2) ## definisikan matrik untuk hasil
> for (i in 1:5) {
+ res [i] <- sqr[i]^2
+ resMat[i,] <- c(i, sqr[i]^2)
+ }
> resMat
[,1] [,2]
[1,] 1 1
[2,] 2 9
[3,] 3 25
[4,] 4 49
[5,] 5 81
> res
[1] 1 9 25 49 81
e) while
Statemen while sama dengan for loop, hanya iterasinya di control oleh sebuah kondisi
berupa ekspresi. Selain itu perbedaan keduanya adalah for digunakan jika banyaknya
perulangan diketahui sebelumnya, sedangkan while jika kita tidak tahu banyaknya
perulangan tidak diketahui, namun kita mengetahui kondisi untuk menghentikan
pengulangan yang disebut stopping condition.
Yang perlu diperhatikan adalah bahwa pastikan stopping condition pasti tercapai, jika tidak
akan terjadi perulangan tak hingga.
Sintaks:
while(condition) statements
Perbandingan for dan while:
Contoh 8
for(i in 0:4){ z <- 0
z <- z + 2 # kenaikan 2 while(z < 10) { ## print selama z < 10
print(z) z <- z + 2 # kenaikan 2
} print(z)
}
[1] 2
[1] 2
[1] 4
[1] 4
[1] 6
[1] 6
[1] 8
[1] 8
[1] 10
[1] 10
Contoh while lainnya:
Contoh 9
> # Variable initialization
> n <- 0
> square <- 0
f) repeat
Untuk repeat, kondisi diberikan di akhir statemen. Sintaks:
repeat{ statements...
if(condition){
break
}
}
Perbandingan di atas juga menunjukkan pada repeat perintah di eksekusi terlebih dahulu
baru kemudian dicek memenuhi kondisi atau tidak. Sedangkan pada while pengecekan
kondisi ada di awal, sehingga eksekusi sintaks akan berhenti pada iterasi berbeda. Hal ini
harus jadi pertimbangan kita saat menulis script. Jika ingin program berhenti sebelum kondisi
terlampaui, maka bisa gunakan perintah while.
a. Apply
Fungsi ini digunakan untuk input data dengan 2 dimensi. Sintaks:
apply(X, MARGIN, FUN, ARGs)
dimana:
X :array 2 dimensi, matriks atau data.frame,
MARGIN : 1 untuk baris dan 2 untuk kolom dan , c(1,2) untuk keduanya;
FUN : fungsi yang ingin dijalankan;
ARGs : argument yang diperlukan untuk fungsi yang telah didefinisikan.
Cobalah beberapa contoh penggunaan apply berikut:
Contoh 12
> data(cars) ## Menggunakan data yang telah ada di R
> head(cars)
speed dist
1 4 2
2 4 10
3 7 4
4 7 22
5 8 16
6 9 10
Fungsi ini berguna untuk melakukan implementasi dari sebuah fungsi ke array atau vector
berjenis kategorik. Sintaks:
Fungsi ini hanya dapat digunakan pada vector, jika ingin melakukan hal yang sama ke
matriks atau data frame maka dapat menggunakan fungsi aggregate:
Contoh 15
> ## Rata2 setiap variabel pada setiap spesies
> aggregate(iris[,1:4], list(iris$Species), mean)
Group.1 Sepal.Length Sepal.Width Petal.Length Petal.Width
1 setosa 5.006 3.428 1.462 0.246
2 versicolor 5.936 2.770 4.260 1.326
3 virginica 6.588 2.974 5.552 2.026
c. lapply, sapply
Sintaks:
lapply(X, FUN)
sapply(X, FUN)
Contoh 16:
> mylist <- as.list(cars[1:5,]) ## membuat list
> mylist
$speed
[1] 4 4 7 7 8
$dist
[1] 2 10 4 22 16
1. Buatlah fungsi sendiri untuk menghitung mean dan standar deviasi! (Tulis script sendiri,
jangan menggunakan fungsi mean dan sd yang sudah ada)
2. Dengan menggunakan fungsi di atas, hitunglah mean dan standar deviasi dari nilai
mahasiswa pada keempat mata kuliah tersebut.
3. Dengan menggunakan fungsi di atas, hitunglah mean nilai yang diperoleh setiap
mahasiswa.
4. Jika mean nilai mahasiswa > 80 statusnya dinyatakan “Baik, 65 – 80 “Cukup”, dan < 65
“Kurang”, bagaimanakah status nilai dari mahasiswa B, G, dan O?