R adalah bahasa pemrograman yang dikhususkan untuk komputasi data statistik dan penyajian data. R menyediakan berbagai macam analisis statistik, seperti pemodelan linear dan nonlinear, pengujian statistik, analisis time series, klasifikasi, kluster, dan sebagainya dan juga teknik-teknik penyajian data.
Alasan memilih R?
R dan R Studio (Post It)
Unduh R dan R Studio (PostIt, 17 Agustus 2024)
Berikut ini adalah dasar-dasar belajar R.
Variabel merupakan suatu object di R yang digunakan untuk menyimpan suatu nilai. Variabel ini bisa terdiri dari nilai tunggal, operasi aritmatika dasar atau kompleks, bahkan bisa dalam bentuk matriks.
Format penulisan variabel:
nama_variabel <- nilai_variabel
Dalam penulisan variabel, terdapat beberapa aturan, umumnya sebagai berikut.
a <- 1 # integer (numeric)
b <- 8L # integer
c <- 2.0 # desimal (numeric)
d <- 8i # complex (imaginer)
e <- "tiga" # string atau teks atau character
f <- TRUE # boolean atau logika
g <- c(4, 5, "enam") # vektor
h <- list(7, 8.0, "sembilan") # list
Penamaan variabel sebaiknya menggambarkan entitas tertentu, contoh:
umur <- 18
nama <- "Budi"
opsi <- c("a", "b", "c", "d")
Ada beberapa tipe data pada R, seperti numeric,
character, logic, dst. Pengecekan terhadap
tipe data dapat dilakukan, seperti pada contoh berikut.
class(a) # mengecek tipe data a
## [1] "numeric"
class(d) # mengecek tipe data d
## [1] "complex"
class(h) # mengecek tipe data h
## [1] "list"
Berikut ini adalah bebagai cara untuk menampilkan data di R:
a
## [1] 1
d
## [1] 0+8i
print(b)
## [1] 8
sprintf("ini adalah contoh %s", e)
## [1] "ini adalah contoh tiga"
length(g)
## [1] 3
Untuk mengambil data dalam suatu list dan vektor, kita bisa gunakan
nama_list[index]. Contohnya adalah mengambil data pada
index ke-satu, maka bisa kita tuliskan g[1].
g[1] # mengambil indeks pertama
## [1] "4"
h[3] # mengambil indeks ketiga
## [[1]]
## [1] "sembilan"
# mengambil karakter dari "tiga" dimulai dari indeks ke-2 sampai ke-3
substring(e, 2, 3)
## [1] "ig"
Pada kasus character (teks), kita menggunakan fungsi
substring seperti pada contoh di atas.
Operasi matematika, seperti aritmatika (penjumlahan, pengurangan, perkalian, pembagian, dst.) serta operasi logika bisa digunakan.
p <- a + b # penjumlahan
print(p)
## [1] 9
q <- a * b # perkalian
print(q)
## [1] 8
r <- b^a # perpangkatan
print(r)
## [1] 8
s <- a == b # apakah a sama dengan b?
print(s)
## [1] FALSE
t <- a < b # apakah a kurang dari b
print(t)
## [1] TRUE
u <- !t # bukan t
print(u)
## [1] FALSE
Percabangan adalah suatu opsi atau pilihan dengan kondisi tertentu, dimana apabila kondisi tersebut terpenuhi, maka opsi tersebut akan dijalankan.
Ada beberapa kondisi yang bisa digunakan, seperti IF,
IF-ELSE, IF-ELSEIF-ELSE.
# IF saja
if (a < b) {
print("nilai a lebih kecil daripada b")
}
## [1] "nilai a lebih kecil daripada b"
# IF-ELSEIF
if (b > c) {
print("nilai b lebih besar daripada c")
} else if (b == c) {
print("nilai b sama dengan c")
}
## [1] "nilai b lebih besar daripada c"
# IF-ELSEIF-ELSE
if (a > c) {
print("nilai a lebih besar daripada c")
} else if (a == c) {
print("nilai a sama dengan c")
} else {
print("nilai a lebih kecil daripada c")
}
## [1] "nilai a lebih kecil daripada c"
# CARA LAIN
# Penggunaan ifelse(konsisi, true, false)
p <- TRUE
ifelse(p, "benar", "salah")
## [1] "benar"
q <- c(TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE)
ifelse(!q, "benar", "salah")
## [1] "salah" "benar" "benar" "salah" "benar" "benar" "benar"
Ada juga cara lain untuk penggunakan percabangan tersebut, seperti
SWITCH.
# SWITCH
# Secara umum Switch mirip dengan fungsi IF
m <- 1:20 # nilai m adalah 1, 2, 3, ..., 20
type <- "mean"
switch(type,
mean = mean(m),
median = median(m),
range = range(m),
sd = sd(m),
var = var(m),
stop("Type salah")
)
## [1] 10.5
Perulangan merupakan suatu proses dimana kita dapat mengulang satu
atau beberapa perintah selama kondisi tersebut terpenuhi. Kita bisa
menggunakan WHILE, REPEAT,
FOR.
# Looping dengan WHILE
i <- 1
while (i < 6) {
print(i)
i <- i + 1
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
# Looping dengan repeat -> mirip while
i <- 1
repeat {
print(i)
i <- i + 1
if (i > 5) {
break
}
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
# Looping dengan FOR
for (x in 1:10) {
msg <- paste0("Looping ke-", x)
message(msg)
}
## Looping ke-1
## Looping ke-2
## Looping ke-3
## Looping ke-4
## Looping ke-5
## Looping ke-6
## Looping ke-7
## Looping ke-8
## Looping ke-9
## Looping ke-10
# Looping dari suatu LIST
fruits <- list("apple", "banana", "cherry")
for (y in fruits) {
print(y)
}
## [1] "apple"
## [1] "banana"
## [1] "cherry"
# Break -> jika ketemu, maka perulangan berhenti
for (z in fruits) {
if (z == "cherry") {
break
}
print(z)
}
## [1] "apple"
## [1] "banana"
# Next -> jika ketemu, perulangan lanjut setelahnya
for (x in fruits) {
if (x == "banana") {
next
}
print(x)
}
## [1] "apple"
## [1] "cherry"
# Kombinasi if-else looping
dadu <- 1:6
for (x in dadu) {
if (x == 6) {
print(paste("Nomor dadu =", x, "Ketemu!"))
} else {
print(paste("Nomor dadu", x, "Ah!Gagal"))
}
}
## [1] "Nomor dadu 1 Ah!Gagal"
## [1] "Nomor dadu 2 Ah!Gagal"
## [1] "Nomor dadu 3 Ah!Gagal"
## [1] "Nomor dadu 4 Ah!Gagal"
## [1] "Nomor dadu 5 Ah!Gagal"
## [1] "Nomor dadu = 6 Ketemu!"
Fungsi merupakan blok kode yang dirancang untuk melakukan tugas tertentu dan dapat dipanggil berkali-kali dalam program.
# Tanpa parameter
say_hello <- function() {
print("Halo, semua!")
}
say_hello()
## [1] "Halo, semua!"
# Dengan parameter
say_myname <- function(name) {
paste("Halo, ", name)
}
say_myname("Eko")
## [1] "Halo, Eko"
# Ada parameter dan return value
hasil_kali <- function(a, b) {
return(a * b)
}
hasil_kali(4, 6)
## [1] 24
Penggunaan fungsi pada level selanjutnya dapat dilihat pada contoh kode program berikut, seperti (1) nested function, (2) rekursi, dan (3) penggunakan global dan local variabel.
Nested function merupakah implementasi fungsi dimana bentuknya bersarang (ada fungsi di dalam fungsi).
# 1. Nested function --> ada fungsi di dalam fungsi
fungsi_bersarang <- function(a, b) {
return(a + b)
}
fungsi_bersarang(fungsi_bersarang(2, 3), fungsi_bersarang(4, 5))
## [1] 14
# step 1: fungsi_bersarang(2, 3) akan diproses hasilnya = 5
# step 2: fungsi_bersarang(4, 5) akan diproses hasilnya = 9
# step 3: fungsi_bersarang(5, 9) akan diproses hasilnya = 14
fungsi_luar <- function(x) {
fungsi_dalam <- function(y) {
return(x + y)
}
return(fungsi_dalam)
}
output <- fungsi_luar(5)
output(9)
## [1] 14
# fungsi_luar mengembalikan sebuah fungsi, yaitu fungsi_dalam
# sehingga perlu ada variabel baru, misal output untuk menangkap fungsi
# step 1: fungsi_luar(5) akan dijalankan mengambalikan fungsi_dalam
# 5 adalah nilai x
# step 2: output(9) dijalankan akan menjadi nilai y
# step 3: output(9) sama dengan menjalankan fungsi_dalam, yaitu 5 + 9 = 14
Rekursi merupakan metode pengulangan yang melibatkan penggunaan dirinya sendiri. Dalam konteks pemrograman, fungsi rekursif adalah suatu bentuk perulangan yang tidak melibatkan iterasi.
# 2. Rekursi -> fungsi yang memanggil dirinya sendiri
faktorial <- function(x) {
if (x == 0) {
return(1)
} else {
return(x * faktorial(x - 1))
}
}
faktorial(5)
## [1] 120
# step 1: faktorial(5), x = 5, return 5 * faktorial(4)
# step 2: faktorial(4), x = 4, return 5 * 4 * faktorial(3)
# step 3: faktorial(3), x = 3, return 5 * 4 * 3 * faktorial(2)
# step 4: faktorial(2), x = 2, return 5 * 4 * 3 * 2 * faktorial(1)
# step 5: faktorial(1), x = 1, return 5 * 4 * 3 * 2 * 1 * faktorial(0)
# step 6: faktorial(0), x = 0, return 5 * 4 * 3 * 2 * 1 * 1 = 120
Global variabel merupakan variabel yang dibuat di luar fungsi dan bisa diakses dimana saja oleh seluruh bagian program. Keberadaan variabel ini memudahkan penggunaan data yang sama di berbagai fungsi tanpa perlu mendeklarasikannya kembali. Variabel lokal dideklarasikan di dalam fungsi atau blok kode dan hanya bisa diakses dalam lingkup tersebut. Ada beberapa contoh yang bisa diterapkan dalam penggunaan variabel global dan lokal tersebut dan bisa dilihat pada contoh kode program berikut.
# 3. Global variables -> variabel yang dibuat di luar fungsi
# Contoh 1:
# teks di dalam function akan menggunakan variabel yang ada di luar (global)
teks <- "awesome!"
contoh1_function <- function() {
paste("R itu", teks)
}
contoh1_function()
## [1] "R itu awesome!"
# Contoh 2:
# teks di dalam function akan menggunakan variabel yang ada di dalam (local)
teks <- "superb!"
contoh2_function <- function() {
teks <- "awesome!"
paste("R itu", teks)
}
contoh2_function() # akan memanggil variabel teks di dalam
## [1] "R itu awesome!"
sprintf("R itu %s", teks)
## [1] "R itu superb!"
# Contoh 3:
# teks di dalam function akan menjadi variabel global
contoh3_function <- function() {
teks <<- "awesome!"
paste("R itu", teks)
}
contoh3_function()
## [1] "R itu awesome!"
sprintf("R itu %s", teks)
## [1] "R itu awesome!"
# Contoh 4:
# teks di dalam function akan menjadi variabel global
# mengganti variabel global sebelumnya di luar fungsi
teks <- "funtastic!"
contoh4_function <- function() {
teks <<- "awesome!"
paste("R itu", teks)
}
contoh4_function()
## [1] "R itu awesome!"
sprintf("R itu %s", teks)
## [1] "R itu awesome!"