Skip to content

Latest commit

 

History

History
530 lines (399 loc) · 8.39 KB

File metadata and controls

530 lines (399 loc) · 8.39 KB

2.Operator dalam R

Muhammad Luqman 2018-04-14

Relational and Logical Operations

Relational Operator

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

Logical Operator

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

Subsetting Vector

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 and Control Flow

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.

if Statement

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 dihasilkan

if-else Statement

Bentuk 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"

if-else if Statement

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"

Loops

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.

while 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))
}

for Loop

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"

break and next

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