Muhammad Luqman 2018-04-14
Operator relasi dalam R yang biasa digunakan adalah ==, !=, >, <, >= dan <=. Contoh operasi relasi dalam R
1 == 2## [1] FALSE
TRUE == TRUE## [1] TRUE
3 != 1## [1] TRUE
TRUE != FALSE## [1] TRUE
3 > 5## [1] FALSE
3 < 5## [1] TRUE
3 >= 5## [1] FALSE
5 >= 5## [1] TRUE
"Hello" > "Goodbye" #urutan alfabetis## [1] TRUE
TRUE > FALSE #TRUE dianggap 1 dan FALSE dianggap 0## [1] TRUE
Operasi relasi dalam R juga dapat dilakukan secara vektorisasi
a_vec = c(1, 2, 3, 7, 7, 9, 10, 12)
b_vec = c(5, 12, 9, 1, 1, 9, 10, 11)
a_vec## [1] 1 2 3 7 7 9 10 12
b_vec## [1] 5 12 9 1 1 9 10 11
a_vec > 4## [1] FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
b_vec >= 10## [1] FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE
a_vec <= b_vec## [1] TRUE TRUE TRUE FALSE FALSE TRUE TRUE FALSE
Operasi logika seperti AND, OR dan NOT dapat dilakukan dengan menggunakan operator &, && |, || dan !. Contoh operasi logika dalam R
TRUE & TRUE## [1] TRUE
TRUE & FALSE## [1] FALSE
TRUE | FALSE## [1] TRUE
FALSE | FALSE## [1] FALSE
!FALSE## [1] TRUE
5 > 10 & 6 < 10## [1] FALSE
Seperti biasa, operasi logika dalam R juga dapat dilakukan secara vektorisasi
c(TRUE, TRUE, FALSE) & c(TRUE, FALSE, FALSE)## [1] TRUE FALSE FALSE
c(TRUE, TRUE, FALSE) | c(TRUE, FALSE, FALSE) ## [1] TRUE TRUE FALSE
!c(TRUE, TRUE, FALSE)## [1] FALSE FALSE TRUE
a_vec = c(1, 2, 3, 7, 7, 9, 10, 12)
a_vec## [1] 1 2 3 7 7 9 10 12
a_vec >= 3 & a_vec < 9## [1] FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE
Seperti yang telah disebutkan pada Pertemuan 1 sebelumnya, Logical Vector dari hasil operasi-operasi diatas dapat digunakan untuk melakukan subsetting elemen Vector seperti pada contoh berikut
a_vec = c(1, 2, 3, 7, 7, 9, 10, 12)
a_vec## [1] 1 2 3 7 7 9 10 12
a_vec >= 3 & a_vec < 9## [1] FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE
a_vec[a_vec >= 3 & a_vec < 9]## [1] 3 7 7
a_vec[!(a_vec < 2)]## [1] 2 3 7 7 9 10 12
a_vec[a_vec %% 2 == 0] #mencari angka genap dalam vector## [1] 2 10 12
Conditional dan Control Flow digunakan untuk mengekspresikan kondisi “jika - maka” dalam R. Hal ini dilakukan ketika kita mengharapkan hasil berbeda yang menyesuaikan kondisi tertentu sehingga syntax yang ditulis lebih robust.
Bentuk umum dari if statement adalah sebagai berikut
if (condition) {
expression if condition is TRUE
}Contoh penggunaan if statement dalam R
x = -3
if (x < 0) {
print("x bilangan negatif")
}## [1] "x bilangan negatif"
x = 99
if (x < 0) { #syarat tidak terpenuhi
print("x bilangan negatif")
}
#tidak ada output yang dihasilkanBentuk umum dari if-else statement adalah sebagai berikut
if (condition) {
expression if condition is TRUE
} else {
expression if condition is FALSE
}Contoh penggunaan if-else statement dalam R
x = -3
if (x < 0) {
print("x bilangan negatif")
} else {
print("x bilangan positif atau nol")
}## [1] "x bilangan negatif"
x = 99
if (x < 0) {
print("x bilangan negatif")
} else {
print("x bilangan positif atau nol")
}## [1] "x bilangan positif atau nol"
Bentuk umum dari if-else if statement adalah sebagai berikut
if (condition 1) {
expression if condition 1 is TRUE
} else if (condition 2) {
expression if condition 1 is FALSE but condition 2 is TRUE
} else {
expression if both condition 1 and condition 2 are FALSE
}Contoh penggunaan if-else if statement dalam R
x = -3
if (x < 0) {
print("x bilangan negatif")
} else if (x == 0) {
print("x bernilai nol")
} else {
print("x bilangan positif")
}## [1] "x bilangan negatif"
x = 0
if (x < 0) {
print("x bilangan negatif")
} else if (x == 0) {
print("x bernilai nol")
} else {
print("x bilangan positif")
}## [1] "x bernilai nol"
x = 99
if (x < 0) {
print("x bilangan negatif")
} else if (x == 0) {
print("x bernilai nol")
} else {
print("x bilangan positif")
}## [1] "x bilangan positif"
Perlu diperhatikan bahwa pemilihan Conditional dan Control Flow harus benar-benar memperhatikan kebutuhan dan menggunakan pilihan yang terbaik. Sebagai contoh kita dapat melihat perbedaan pada dua syntax berikut
x = 6
if (x %% 2 == 0) {
print("x dapat dibagi 2")
} else if (x %% 3 == 0) {
print("x dapat dibagi 3") #meskipun pernyataan ini benar, syntax ini tidak akan berjalan
}## [1] "x dapat dibagi 2"
x = 6
if (x %% 2 == 0) {
print("x dapat dibagi 2")
} ## [1] "x dapat dibagi 2"
if (x %% 3 == 0) {
print("x dapat dibagi 3")
}## [1] "x dapat dibagi 3"
Perulangan merupakan suatu teknik dalam R dimana suatu ekspresi dilakukan secara berulang sampai dengan ketetapan yang ditentukan. Perulangan membantu kita dalam melakukan hal yang repetitif tanpa harus menulis syntax berulang kali. Perulangan dalam R dapat dilakukan dengan menggunakan bentuk while loop dan for loop.
Bentuk umum dari while loop adalah sebagai berikut
while (condition) {
expression as long as condition is TRUE
condition altering
}Contoh penggunaan while loop dalam R
x = 1
while (x <= 5) {
print(paste("nilai x adalah", x))
x = x + 1 #mengubah nilai x sebelum perulangan berikutnya
}## [1] "nilai x adalah 1"
## [1] "nilai x adalah 2"
## [1] "nilai x adalah 3"
## [1] "nilai x adalah 4"
## [1] "nilai x adalah 5"
x #nilai x setelah perulangan selesai## [1] 6
Perlu diperhatikan bahwa condition altering diperlukan dalam while loop supaya perulangan dapat berhenti pada titik tertentu. Contoh dibawah ini akan menghasilkan perulangan terus menerus dikarenakan tidak adanya condition altering
x = 1
while (x <= 5) {
print(paste("nilai x adalah", x))
}Bentuk umum dari while loop adalah sebagai berikut
for (variable in vector) {
expression
}Penggunaan for loop dalam R dapat dilakukan dengan dua variasi cara seperti contoh berikut
#variasi pertama
cities = c("Bekasi", "Batam", "Jakarta", "Tangerang", "Bogor")
for (city in cities) {
print(city)
}## [1] "Bekasi"
## [1] "Batam"
## [1] "Jakarta"
## [1] "Tangerang"
## [1] "Bogor"
#variasi kedua
cities = c("Bekasi", "Batam", "Jakarta", "Tangerang", "Bogor")
for (i in 1:length(cities)) {
print(paste("Kota dengan indeks ke", i, "adalah", cities[i]))
}## [1] "Kota dengan indeks ke 1 adalah Bekasi"
## [1] "Kota dengan indeks ke 2 adalah Batam"
## [1] "Kota dengan indeks ke 3 adalah Jakarta"
## [1] "Kota dengan indeks ke 4 adalah Tangerang"
## [1] "Kota dengan indeks ke 5 adalah Bogor"
Adakalanya dalam perulangan kita mendapatkan kondisi dimana perulangan perlu dihentikan secara khusus atau suatu iterasi dalam perulangan tidak perlu dilakukan (di skip). Untuk melakukan hal tersebut, kita dapat menggunakan break dan next dalam R yang digabung menggunakan Conditional Statement yang telah dijelaskan diatas. Penggunaan break dan next dapat dilakukan seperti contoh berikut
for (i in 1:100) {
if ((i %% 5 == 0) & (i %% 14 == 0)) { #berhenti ketika i merupakan kelipatan 5 dan 7
break
}
if (i %% 2 == 0) { #skip ketika i merupakan bilangan genap
next
}
print(i)
}## [1] 1
## [1] 3
## [1] 5
## [1] 7
## [1] 9
## [1] 11
## [1] 13
## [1] 15
## [1] 17
## [1] 19
## [1] 21
## [1] 23
## [1] 25
## [1] 27
## [1] 29
## [1] 31
## [1] 33
## [1] 35
## [1] 37
## [1] 39
## [1] 41
## [1] 43
## [1] 45
## [1] 47
## [1] 49
## [1] 51
## [1] 53
## [1] 55
## [1] 57
## [1] 59
## [1] 61
## [1] 63
## [1] 65
## [1] 67
## [1] 69