#belajarR-04: Dasar-Dasar Bahasa Pemrograman R (Part 2)

Ziyadatul Hikmah
7 min readOct 2, 2023

--

Edited on canva.com by ©Ziyadatul Hikmah, image source from ©Myburgh Roux

Hallo Guys!

Melanjutkan chapter #belajarR-03, untuk chapter #belajarR kali ini masih dengan topik yang sama yaitu Dasar-Dasar Bahasa Pemrograman R Part 2. Lalu, apa saja yang akan dibahas?

Dasar-dasar bahasa pemrograman R part 2 yang akan dibahas meliputi: operator, if…else, while loop, dan function. Let’s go!

R Operator

Operator digunakan untuk melakukan operasi pada variabel dan nilai ketika melakukan manipulasi data di R. Adapun macam-macam operator di R, yaitu sebagai berikut:

1. Operator Aritmatika (Arithmetic Operators)

Operator aritmatika banyak digunakan untuk melakukan operasi matematika di R dan umumnya menggunakan nilai numerik sebagai values dari variable-nya.

Pada contoh di bawah ini, saya menggunakan operator + untuk menambahkan dua nilai:

2023 + 5 # penjumlahan (+) merupakan salah satu operasi aritmatika 

Operator aritmatika lainnya, dapat dilihat pada Tabel 1.

Table 1. Operator aritmatika dan fungsinya

Coba kita lakukan beberapa operasi aritmatika dengan membuat variable x dan y! Kemudian jalankan print output dan perhatikan bagaimana hasilnya?!

# create a variable x and y
x <- 7.5
y <- 3

# operator addition
x + y

# operator substraction
x - y

# operator multiplication
x * y

# operator division
x / y

# operator exponent
x ^ y

# operator modulus
x %% y

# operator integer division
x %/% y

Output:

[1] 10.5
[1] 4.5
[1] 22.5
[1] 2.5
[1] 421.875
[1] 1.5
[1] 2

Perlu kamu perhatikan juga, penggunaan operator aritmatika perlu mempertimbangkan hierarki prioritas operasinya. Seperti pada umumnya, operasi aritmatika memiliki prinsip akan dikerjakan terlebih dahulu dari yang ada di dalam tanda kurung lalu setelah itu akan diikuti oleh operasi lainnya. Hierarki prioritas operasi aritmatika secara lengkap dapat dilihat pada Tabel 2.

Table 2. Hirarki prioritas operasi operator aritmatika

Untuk lebih memahaminya, kita coba dengan contoh operasi aritmatika berikut ini.

-3+(5^2*4)/5 

Output:

[1] 17

Operasi aritmatika tersebut akan menghasilkan nilai 17 dengan urutan pengerjaan sebagai berikut:

  • Pemberian tanda negatif pada angka 3 (unari)
  • Operasi dalam tanda kurung dengan urutan eksponensiasi 5² diikuti perkalian dari hasil yaitu 25*4
  • Operasi pembagian terhadap nilai dalam kurung dengan angka 5 menjadi 100/5
  • Operasi penjumlahan antara angka -3 dengan hasil bagi 100/5 yaitu menjadi -3 + 20 sehingga hasil akhir adalah 17

2. Operator Penugasan (Assignment Operators)

Operator penugasan digunakan untuk menetapkan nilai ke variabel. Perhatikan contoh berikut ini!

# operator penugasan
x <- value
x <<- value
value -> x
value ->> x

Argument:
x
nama variabel (mungkin dikutip).

value
nilai yang akan diberikan ke x.

Secara umum, di R terdapat tiga jenis operator penugasan yang berbeda, dimana dua di antaranya memiliki bentuk ke kiri dan ke kanan.

Operator <- dan = memberikan nilai ke dalam lingkungan di mana nilai tersebut dievaluasi. Operator <- merupakan operator yang paling sering digunakan oleh user R, karena mudah digunakan. Sedangkan operator = hanya diperbolehkan di tingkat atas/high level (misalnya, dalam ekspresi lengkap yang diketikkan pada prompt perintah) atau sebagai salah satu subekspresi dalam daftar ekspresi yang diapit.

Operator <<- dan ->> biasanya hanya digunakan dalam fungsi/function, dan menghasilkan proses penelusuran melalui fungsi-fungsi yang ada di dalam environment untuk mencari nilai dari variabel yang ditetapkan. Jika variabel tersebut ditemukan (dan binding-nya tidak dikunci) maka nilainya akan didefinisikan ulang, jika tidak, assignment akan dilakukan di global environment.

Perlu kamu perhatikan, pada bentuk penugasan dengan arah ke kiri <- = <<- akan mengelompokkan nilai dari kanan ke kiri, begitu juga sebaliknya.

3. Operator Perbandingan (Comparison Operators)

Operator perbandingan digunakan untuk membandingkan dua nilai (Tabel 3).

Table. 3 Operator perbandingan

Contoh:

x <- 3
y <- 4

# operator perbandingan
x == y
x != y
x > y
x < y
x >= y
x <= y

Output:

[1] FALSE
[1] TRUE
[1] FALSE
[1] TRUE
[1] FALSE
[1] TRUE

Kemudian jika kita membandingakan hirarki prioritas antara operator perbandingan dengan operator aritmatika, maka operator perbandingan memiliki hierarki prioritas yang lebih rendah dibandingkan dengan operator aritmatika (Tabel 4).

Table 4. Hirarki prioritas operasi operator perbadingan

4. Operator Logika (Logical Operators)

Operator logika digunakan untuk menggabungkan pernyataan bersyarat.

Table 5. Operator logika

Contoh:

a <- c(TRUE, TRUE, FALSE)  
b <- c(FALSE, FALSE, FALSE)

# Operator logika
a && b
a || b
! a
a & b
a | b

Output:

[1] FALSE
[1] TRUE
[1] FALSE FALSE TRUE
[1] FALSE FALSE FALSE
[1] TRUE TRUE FALSE

5. Operator Lainnya (Miscellaneous Operators)

Operator lain/miscellaneous operators digunakan untuk memanipulasi data (Tabel 6).

Table 6. Operator lainnya/miscellaneous operators

If…Else

Statement If merupakan fungsi yang sering digunakan dalam logical function. Statement If…Else juga membutuhkan operator logical, seperti yang tercantum pada Tabel 5 sebelumnya.

Jika “kondisi” bernilai TRUE, maka “fungsi” akan dijalankan. Jika “kondisi” bernilai FALSE, maka “fungsi” tidak akan dijalankan.

Syntax untuk penggunaan statement ini yang lebih kompleks, dapat dilihat syntax di bawah ini!

if (kondisi 1) {….} else if (kondisi 2) {….} else {….}

Sebagai contoh:

# statement if
if (5 > 4) { print( "5 lebih besar dari 4" )}

Output:

[1] "5 lebih besar dari 4"

Pada contoh sebelumnya, kondisi 5 > 4 adalah TRUE, maka fungsi print() di dalam tanda kurung kurawal {} dieksekusi/dijalankan.

Berikut ini contoh lain kondisi If…Else, menggunakan statement else if. Statement else if adalah cara R untuk mengatakan “jika kondisi sebelumnya tidak benar, maka coba kondisi ini.”

a <- 2023
b <- 2023

# statement if..else if
if (b > a) {
print("b lebih besat dari a")
else if (a == b) {
print("a sama dengan b")
}
}

Output:

[1] "a sama dengan b"

Contoh kondisi lainnya, ketika a lebih besar dari b, jadi kondisi pertama FALSE, kemudian kondisi else if juga FALSE, jadi kita pergi ke kondisi else dan melakukan print output untuk menampilkan bahwa “a lebih besar dari b”. Kita juga dapat menggunakan statement else secara langsung tanpa menggunakan statement else if.

a <- 200
b <- 33

if (b > a) {
print("b lebih besar dari a")
} else {
print("b lebih kecil dari a")
}

While…For Loop

Loops/perulangan dapat mengeksekusi sebuah blok kode selama kondisi tertentu sesuai. Loops sangat berguna karena selain kita bisa menghemat waktu, mengurangi kesalahan, juga dapat membuat kode lebih mudah dibaca.

R memiliki dua perintah perulangan, yaitu:

  • While loop
  • For loop

Dengan statement while loop, kita dapat mengeksekusi sekumpulan pernyataan selama suatu kondisi bernilai TRUE. Syntax statement while loop adalah sebagai berikut:

# while loop 
i <- 1

while (i < 6) {
print(i)
i <- i + 1
}

Output:

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

Sedangkan statement for loop digunakan untuk mengulang sebuah urutan. Dengan for loop, kita dapat mengeksekusi sekumpulan statement, satu kali untuk setiap item dalam bentuk vector, array, list, dsb. Berikut ini adalah syntax dari statement for loop:

for (variable in sequence) {….}

# for loop
for (i in 1:10) {
print(i)
}

Output:

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10

R Function

Fungsi/function adalah suatu blok kode yang hanya berjalan ketika dipanggil dengan menggunakan parameter sebagai input ke dalam fungsi tersebut, kemudian fungsi dapat mengembalikan/return data sebagai hasilnya. Untuk membuat sebuah fungsi di R, kita dapat menggunakan syntax function(). Perhatikan contoh berikut ini!

# create a function
my_function <- function() {
print("Analisis Spasial Lingkungan")
}

my_function() # call the function named my_function

Output:

[1] "Analisis Spasial Lingkungan"

Nah, bagaimana jika R function diterapkan dalam analisis spasial lingkungan?

Saya akan memberikan salah satu contohnya, yaitu untuk analisis kerapatan vegetasi. Analisis kerapatan vegetasi dapat dihitung dengan indeks vegetasi yang dikenal dengan sebutan Normalized Difference Vegetation Index (NDVI).

Normalized Difference Vegetation Index (NDVI) adalah indeks kuantitatif tingkat kehijauan yang berkisar antara 0–1, di mana 0 menunjukkan tingkat kehijauan minimal atau tidak ada tingkat kehijauan dan 1 menunjukkan tingkat kehijauan maksimal.

NDVI dihitung dari cahaya tampak (RED) dan cahaya inframerah (NIR/Near Infrared) yang dipantulkan oleh vegetasi dengan formula:

NDVI = (NIR-RED)/(NIR+RED).

Pertanyaannya, bagaimana cara kita untuk menghitung NDVI di R? Jawabannya simple, perhatikan kode di bawah ini!

# rumus menghitung indeks NDVI di R
calculate_ndvi <- function(NIR, RED) {
NDVI <- (NIR - RED)/(NIR + RED)

return(NDVI)
}

# cara untuk menggunakan rumus atau fungsi tersebut
landsat_8 <- raster("composite_landsat8.tif")
NIR <- landsat_8[5]
RED <- landsat_8[4]

NDVI <- calculate_ndvi()

Btw, terkait menghitung indeks vegetasi yang saya contohkan sebelumnya, saya kira untuk lebih jelasnya akan dibahas lebih lanjut di chapter tersendiri. Kemudian untuk chapter lanjutan #belajarR akan membahas tentang R data structures, R Packages, bagaimana cara untuk install dan load R Packages, kemudian cara-cara untuk importing berbagai jenis data ke R (csv, xls, vektor, dan raster). Sampai jumpa lagi!

じゃあ、 また — Jaa, mata (^^)

Reference

--

--

Ziyadatul Hikmah

GIS Assistant based in Laboratory of Environmental Analysis and Geospatial Modelling, Faculty of Forestry and Environment, IPB University.