Praktikum Pemrograman Statistika

Dasar-dasar Pemrograman R

Author

Muhammad Yusran

Published

August 26, 2025

Pendahuluan

R is a scripting language for statistical data manipulation and analysis. It was inspired by, and is mostly compatible with, the statistical language S developed by AT&T. The name S, for statistics, was an allusion to another programming language with a one-letter name developed at AT&T—the famous C language. S later was sold to a small firm, which added a graphical user interface (GUI) and named the result S-Plus. (Matloff, 2011)

R adalah bahasa pemrograman skrip untuk manipulasi dan analisis data statistik. Bahasa ini terinspirasi dari, dan sebagian besar kompatibel dengan, bahasa statistik S yang dikembangkan oleh AT&T. Nama S, yang merupakan singkatan dari statistics, merupakan kiasan terhadap bahasa pemrograman lain dengan nama satu huruf yang juga dikembangkan di AT&T—yaitu bahasa C yang terkenal. Kemudian, S dijual ke sebuah perusahaan kecil yang menambahkan antarmuka grafis (GUI) dan menamainya sebagai S-Plus. (Matloff, 2011)

R adalah bahasa pemrograman yang bersifat interpreter, artinya setiap perintah yang kita tulis akan langsung dijalankan oleh R tanpa perlu proses kompilasi. R juga bersifat interaktif, sehingga kita bisa mengetik perintah, mengeksekusinya, dan langsung melihat hasilnya di layar.

Contohnya, jika kita mengetik perintah berikut di konsol R:

 5+2

Lalu menekan Enter, R akan langsung menampilkan hasilnya:

[1] 7

Semua perintah atau teks yang ditulis setelah tanda # tidak akan dieksekusi oleh R. Biasanya ini berguna untuk memberikan komentar atau catatan

# Ini contoh komentar, tidak akan dieksekusi
5+2
[1] 7

Konsol R diawali tanda >, yang menunjukkan bahwa R siap menerima perintah baru. Jika perintah dimasukkan tidak lengkap, maka tanda tersebut akan berubah menjadi tanda +. Contohnya pada 2 kode dibawah ini:

# Perintah lengkap, R langsung mengeksekusi
10 * 2
[1] 20
# Perintah tidak lengkap, R menunggu kelanjutan
10 *
+ 5
[1] 50

Memasukkan Nilai ke Objek di R

Apa itu Objek di R?

Objek adalah wadah untuk menyimpan suatu nilai atau data. Di R, kita bisa membuat objek menggunakan operator assignment. Ada tiga cara utama untuk memasukkan nilai ke objek:

Operator Assignment Format Umum Contoh Keterangan
<- obj <- expr x <- 10 Cara paling umum dan direkomendasikan
= obj = expr x = 10 Sama artinya, tapi jarang dipakai
-> expr -> obj 10 -> x Nilai di kiri dimasukkan ke variabel kanan

Dalam R, sangat disarankan untuk menggunakan tanda <- sebagai operator assigment. obj <- expr berarti masukkan nilai hasil dari operasi di sisi kanan (expr) ke dalam objek di sisi kiri (obj).

Contoh Dasar Memasukkan Nilai

# Cara 1: Menggunakan operator <-
a <- 5
b <- 10

Artinya, kita memasukkan nilai 5 ke dalam objek a dan nilai 10 ke dalam objek b.

# Cara 2: Menggunakan operator =
c = 15
# Cara 3: Assignment kanan-ke-kiri
20 -> d

Untuk menampilkan nilai yang ada di suatu Objek, kita cukup mengetikkan nama variabel terkait lalu enter, contohnya

a
[1] 5
b
[1] 10
c
[1] 15
d
[1] 20

atau bisa juga dengan fungsi print():

print(a)
[1] 5

Contoh lainnya adalah

e <- 14+12
print(e)
[1] 26

Penamaan Objek di R

Segala hal dalam R dipandang sebagai objek, misalnya data, fungsi, dan lain-lain. Objek-objek tersebut dapat “diberi nama” dengan apapun yang kita mau. Pada contoh sebelumnya, kita mempunyai objek dengan nama a, b, c, d dan e. Meskipun demikian, ada beberapa aturan penamaan objek dalam R yang harus dipenuhi, yaitu:

  • Menggunakan kombinasi alfabet (a-z, A-Z), angka (0-9), titik (.), atau underscore (_).
  • Hanya boleh diawali oleh alfabet, titik, atau underscore, tidak boleh diawali dengan angka.
  • Tidak boleh mengandung:
    • Spasi
    • Tab
    • Karakter khusus seperti !, @, #, %, &, dan lainnya.
  • Hindari menggunakan nama objek yang sudah ada di R, seperti:
    • c, q, s, t, diff, length, mean, dll
    • FALSE, TRUE, Inf, NA, NaN, NULL, break, else, for, dll

Ketika membuat sebuah program dalam R (atau bahasa pemrograman apapun), disarankan untuk menggunakan penamaan yang lazim dan konsisten, seperti:

Gaya Penamaan Contoh
alllowercase statistika
period.separated statistika.time1
underscore_separated statistika_time1
lowerCamelCase statistikaTime1
UpperCamelCase StatistikaTime1

💡 Meskipun diizinkan, penggunaan underscore (_) sebaiknya dihindari karena jarang diterapkan di R.

R bersifat case-sensitive baik dalam penamaan objek maupun isi dari objek tersebut. Huruf kecil dan huruf besar menunjukkan hal berbeda. ABC berbeda dengan abc, berbeda pula dengan Abc maupun AbC dan seterusnya. Contohnya adalah

ABC <- 10
abc <- 20
ABC
[1] 10
abc
[1] 20

Working Directory

Apa itu working directory?

Working Directory (folder kerja) adalah lokasi atau direktori aktif tempat R menjalankan semua proses saat ini. Semua proses membaca dan menyimpan file akan dilakukan secara default di working directory tersebut.

Mengecek working directory saat ini

Untuk mengetahui working directory yang sedang digunakan, gunakan fungsi getwd():

getwd()
[1] "D:/S2-Semester 3/Asprak Pemrograman Statistika/Materi"

"D:/S2-Semester 3/Asprak Pemrograman Statistika/Materi" merupakan working directory yang saya gunakan untuk membuat materi ini.

Mengganti working directory

Untuk mengganti working directory, gunakan fungsi setwd() dengan menuliskan alamat directory tujuan:

setwd("D:/Statistika dan Sains Data IPB")

Jika kita mengecek working directory saat dengan getwd(), maka akan menghasilkan

getwd()
[1] "D:/Statistika dan Sains Data IPB"

Terlihat bahwa working directory saat ini adalah "D:/Statistika dan Sains Data IPB"

Pastikan saat menulis lokasi folder atau nama file di R, gunakan format path yang benar. Ada dua hal penting:

Mengakses Lokasi Folder atau File dengan Benar

Pastikan saat menulis lokasi folder atau nama file di R, gunakan format path yang benar. Ada beberapa hal penting yang perlu diperhatikan.

Gunakan Slash (/) atau Double Backslash (\\)** Pada Windows, tanda backslash (\) digunakan di Explorer, tapi di R harus diganti dengan slash (/) atau double backslash (\\).

Contoh salah

setwd("D:\R Project\Materi")   # ERROR!

Contoh benar

setwd("D:/R Project/Materi")   # Disarankan
# atau
setwd("D:\\R Project\\Materi") # Alternatif aman

Untuk mengakses file yang berada dalam folder kerja, cukup menuliskan nama filenya saja, misalnya

data <- read.csv("Data.csv")

Jika kesulitan menentukan lokasi file, gunakan fungsi file.choose():

data <- read.csv(file.choose())

R akan membuka jendela file picker, sehingga kita bisa memilih file langsung tanpa mengetik path.

Contoh File Picker

💡 Tips Penting:

  • Gunakan slash (/) untuk menghindari error.
  • Jika menggunakan backslash (\), tulis ganda menjadi \\.
  • Selalu gunakan tanda kutip "..." untuk path dan nama file.

Mode Objek Data

R memiliki beberapa jenis mode objek dasar, yang disebut juga “atomic class”. Tipe ini menentukan bagaimana data disimpan dan bagaimana R memprosesnya.

Jenis Mode Objek Dasar

Tipe Data Contoh Nilai Keterangan
character “ipb”, “mahasiswa”, “statistika” Berisi teks atau string
numeric 12, 2.3, 1.2e-2 Bilangan real (desimal)
complex 1.2e6+2i Bilangan kompleks
logical TRUE, FALSE, T, F Nilai logika (benar/salah)
# Tipe character
nama <- "IPB University"

# Tipe numeric
angka <- 12.5

# Tipe complex
bilangan_kompleks <- 3 + 2i

# Tipe logical
lulus <- TRUE

Mengecek Tipe Data

Gunakan fungsi class() untuk mengetahui tipe objek:

class(nama)          # character
[1] "character"
class(angka)         # numeric
[1] "numeric"
class(bilangan_kompleks) # complex
[1] "complex"
class(lulus)         # logical
[1] "logical"

Perbedaan Numeric dan Integer

Secara default, angka di R diperlakukan sebagai numeric (bilangan real). Artinya, sebuah angka yang terlihat sebagai 1 atau 2, sebetulnya direpresentasikan oleh R sebagai objek numerik, seperti 1.00 atau 2.00. Apabila kita menginginkan objek integer, kita harus menambahkan akhiran L. Misal untuk mendapatkan integer 1 harus ditulis 1L.

x <- 5      # numeric
y <- 5L     # integer
class(x)    # "numeric"
[1] "numeric"
class(y)    # "integer"
[1] "integer"

Operasi Pada Character

Dalam R, karakter atau string adalah data yang diapit oleh tanda kutip (" " atau ' '). R menyediakan beberapa fungsi bawaan untuk memanipulasi dan menganalisis string.

Fungsi nchar() digunakan untuk menghitung jumlah karakter dalam sebuah string.

teks <- "Belajar R itu menyenangkan!"
nchar(teks)
[1] 27

Fungsi paste() dan paste0 digunakan untuk menggabungkan dua atau lebih string. Secara default, paste() menambahkan spasi antar elemen, sedangkan paste0() tidak menambahkan spasi.

nama_depan <- "Muhammad"
nama_belakang <- "Yusran"
# Menggabungkan dengan spasi
paste(nama_depan, nama_belakang)
[1] "Muhammad Yusran"
# Menggabungkan tanpa spasi
paste0(nama_depan, nama_belakang)
[1] "MuhammadYusran"
# Menggabungkan dengan pemisah kustom
paste(nama_depan, nama_belakang, sep = "_")
[1] "Muhammad_Yusran"

Fungsi ini substr() dan substring() digunakan untuk mengambil sebagian karakter dari sebuah string. Terdapat sedikit perbedaan antara keduanya:

  • substr(teks, start, stop) digunakan untuk mengambil bagian string dari indeks start sampai stop. Fungsi ini mewajibkan kita untuk menentukan kedua argumen start dan stop. Fungsi ini cocok ketika kita tahu posisi awal dan akhir karakter yang diambil.
  • substring(teks, first, last) digunakan untuk mengambil substring mulai dari indeks first sampai last. Jika argumen last tidak diisi, maka substring akan diambil sampai akhir string. Fungsi ini lebih fleksibel dibanding substr() karena argumen last bersifat opsional.
teks <- "Belajar Analisis Data"
# Menggunakan substr(): ambil karakter ke-1 sampai ke-7
substr(teks, start = 1, stop = 7)
[1] "Belajar"
# Menggunakan substring(): ambil mulai karakter ke-9 sampai akhir
substring(teks, first = 9)
[1] "Analisis Data"
# substring juga bisa dibatasi sampai indeks tertentu
substring(teks, first = 9, last = 16)
[1] "Analisis"

Struktur Data

Terdapat beberapa tipe objek data standar dalam R, yaitu:

Struktur Data Keterangan
Vector Tipe data paling sederhana, semua elemen memiliki mode yang sama
Factor Vektor dengan elemen berupa kategori
Matrix Vektor berdimensi dua (baris × kolom)
Array Penyimpanan data berdimensi lebih dari dua
Data Frame Menyimpan data berbentuk tabel (baris dan kolom)
List Vektor fleksibel, tiap elemen bisa beda tipe

Vector

Vector adalah objek data paling sederhana dalam R dan digunakan oleh hampir semua fungsi aritmatik. Dalam vector, semua elemen harus memiliki mode yang sama (semua numerik, semua karakter, atau semua logika).

Membuat vector

Ada banyak cara membuat vector. Beberapa di antaranya adalah menggunakan perintah c(), seq() dan rep().

Menggunakan c() (Combine)

Sebuah vektor dapat dibuat dengan fungsi c() di mana setiap elemen dipisahkan oleh tanda koma.

# Membuat vector numerik
angka <- c(1, 2, 3, 4, 5)
angka
[1] 1 2 3 4 5
# Membuat vector karakter
nama <- c("Uccang", "Syafiq", "Ngurah", "Adib")
nama
[1] "Uccang" "Syafiq" "Ngurah" "Adib"  
# Membuat vector logika
lulus <- c(TRUE, FALSE, TRUE)
lulus
[1]  TRUE FALSE  TRUE

Jika kita mengecek type dari vector-vector tersebut, maka:

class(angka)
[1] "numeric"
class(nama)
[1] "character"
class(lulus)
[1] "logical"

Kadang, kita memasukkan objek dengan mode berbeda ke dalam satu vektor, baik karena sengaja maupun tidak sengaja. Apa yang akan terjadi?

Dalam kasus seperti ini, R akan otomatis mengonversi semua elemen vektor ke dalam mode yang paling sesuai. Aturannya adalah:

Jika ada perbedaan tipe, R akan menaikkan prioritas tipe data ke urutan berikut: logicalnumericcharacter

vektor1 <- c(1.7, "statistika", 3.5)
vektor1
[1] "1.7"        "statistika" "3.5"       
class(vektor1)
[1] "character"

Pada contoh diatas, ada dua kemungkinan mode yaitu numerik dan character. Karena mengkonversi yang memungkinkan adalah konversi numerik ke karakter (bukan sebaliknya), maka akan mengkonversi 1.7 menjadi character “1.7”.

vektor2 <- c(10, TRUE, 5)
vektor2
[1] 10  1  5
class(vektor2)
[1] "numeric"
vektor3 <- c(TRUE, "IPB", FALSE)
vektor3
[1] "TRUE"  "IPB"   "FALSE"
class(vektor3)
[1] "character"

Menggunakan seq() (Sequence)

Fungsi seq() digunakan untuk membuat vector yang berisi angka berurutan. Misalnya kita ingin membuat Vector 1 sampai dengan 10, dengan incremental 1

bilangan <- seq(from = 1, to = 10)
bilangan
 [1]  1  2  3  4  5  6  7  8  9 10

atau bisa juga dengan cara singkat, yaitu menggunakan tanda titik dua : seperti perintah berikut:

bilangan1 <- 1:10
bilangan1
 [1]  1  2  3  4  5  6  7  8  9 10

Bagaimana jika kita ingin membuat vector 1 sampai 10, tapi dengan incremental 2?

bilangan2 <- seq(from = 1, to = 10, by = 2)
bilangan2
[1] 1 3 5 7 9

Menggunakan rep() (Repeat)

Fungsi rep() digunakan untuk membuat vector dengan mengulang nilai yang diinginkan, misalnya kita ingin mengulang angka 5 sebanyak 5 kali

ulangan <- rep(5, times = 4)
ulangan
[1] 5 5 5 5

Bagaimana jika kita ingin mengulang beberapa nilai berbeda sekaligus, misalnya 1, 2, dan 3, masing-masing diulang dua kali?

rep_vector <- rep(c(1, 2, 3), times = 2)
rep_vector
[1] 1 2 3 1 2 3

Kalau kita ingin mengulang tiap elemen dari vektor sebelum pindah ke elemen berikutnya, gunakan argumen each=.

rep_each <- rep(c(1, 2, 3), each = 2)
rep_each
[1] 1 1 2 2 3 3

Perhatikan perbedaannya:

  • times=2 → ulang keseluruhan vektor dua kali: 1 2 3 1 2 3
  • each=2 → ulang setiap elemen dua kali: 1 1 2 2 3 3

Mengakses element dari vector

Untuk mengambil nilai tertentu dari sebuah vector, kita menggunakan tanda kurung siku [ ] dengan menyertakan indeks posisi elemen. Ingat, indeks di R dimulai dari 1, bukan 0 seperti di beberapa bahasa pemrograman lain.

Gunakan indeks tunggal [posisi] untuk mengambil satu elemen tertentu:

angka <- c(10, 20, 30, 40, 50)

# Mengambil elemen ke-3
angka[3]
[1] 30

Gunakan vektor indeks untuk mengambil beberapa elemen sekaligus:

# Mengambil elemen ke-1 dan ke-4
angka[c(1, 4)]
[1] 10 40
# Mengambil elemen ke-2 sampai ke-5
angka[2:5]
[1] 20 30 40 50

Operasi pada vector

Dalam R, operasi aritmatika pada vektor dilakukan element by element (element-wise). Artinya, setiap elemen pada vektor pertama akan dipasangkan dengan elemen pada posisi yang sama di vektor kedua.

x <- c(2, 4, 6)
y <- c(1, 3, 5)

# Penjumlahan
x + y
[1]  3  7 11
# Pengurangan
x - y
[1] 1 1 1
# Perkalian
x * y
[1]  2 12 30
# Pembagian
x / y
[1] 2.000000 1.333333 1.200000

Jika dua vektor yang dioperasikan memiliki panjang berbeda, maka elemen vektor yang lebih pendek akan diulang (recycled) mengikuti panjang vektor yang lebih panjang.

c <- c(1, 2, 3, 4, 5)
d <- c(10, 20)

# Panjang vektor tidak proporsional
c + d
Warning in c + d: longer object length is not a multiple of shorter object
length
[1] 11 22 13 24 15

Fungsi lain

Fungsi lain sering digunakan dalam vector adalah length(). Fungsi length() berguna untuk mengetahui panjang atau banyaknya elemen dari suatu vector.

length(angka)
[1] 5

Factor

Faktor digunakan untuk merepresentasikan data kategorik, baik terurut/ordered maupun tidak terurut/unordered. Faktor dapat dianggap sebagai vektor di mana setiap elemennya memiliki label. Objek faktor dapat dibuat dengan fungsi factor().

Contoh, kita memiliki data tingkat pendidikan responden:

# Membuat faktor sederhana
pendidikan <- c("SD", "SMA", "SMP", "SD", "SMA", "SMP", "SD", "SMP")
pendidikan <- factor(pendidikan)
pendidikan
[1] SD  SMA SMP SD  SMA SMP SD  SMP
Levels: SD SMA SMP

atau

pendidikan <- factor(c("SD", "SMA", "SMP", "SD", "SMA", "SMP", "SD", "SMP"))
pendidikan
[1] SD  SMA SMP SD  SMA SMP SD  SMP
Levels: SD SMA SMP

Kita bisa mengatur urutan levels sesuai keinginan menggunakan argumen levels:

factor(pendidikan, levels = c("SD", "SMP", "SMA"))
[1] SD  SMA SMP SD  SMA SMP SD  SMP
Levels: SD SMP SMA

Jika data memiliki tingkatan tertentu, kita tambahkan argumen ordered = TRUE:

factor(pendidikan, levels = c("SD", "SMP", "SMA"), ordered = TRUE)
[1] SD  SMA SMP SD  SMA SMP SD  SMP
Levels: SD < SMP < SMA
length(pendidikan)
[1] 8
class(pendidikan)
[1] "factor"
Aspek Vektor Karakter Faktor (Unordered) Faktor (Ordered)
Definisi Kumpulan nilai bertipe karakter tanpa atribut tambahan Kumpulan kategori dengan label, tidak ada urutan antar level Kumpulan kategori dengan urutan antar level
Fungsi Pembuat c() factor() factor(..., ordered=TRUE)
Urutan Level Tidak ada urutan Level disimpan tapi tidak terurut Level terurut sesuai argumen levels
Contoh Data c("SD","SMA","SMP") factor(c("SD","SMA","SMP")) factor(c("SD","SMA","SMP"), levels=c("SD","SMP","SMA"), ordered=TRUE)
Output Levels Tidak ada Levels: SD SMA SMP Levels: SD < SMP < SMA
Perbandingan Nilai Tidak bisa dibandingkan (>, < akan error) Tidak bisa dibandingkan Bisa dibandingkan (SMA > SMPTRUE)
Kapan Digunakan Untuk menyimpan teks biasa tanpa analisis kategori Untuk data kategorik tanpa hierarki, misalnya warna: merah, hijau, biru Untuk data kategorik dengan hierarki, misalnya pendidikan, kepuasan, tingkat pendapatan
# Vektor karakter biasa
vektor <- c("SD", "SMA", "SMP")
vektor
[1] "SD"  "SMA" "SMP"
# Faktor tidak terurut (unordered)
faktor_unordered <- factor(c("SD", "SMA", "SMP"))
faktor_unordered
[1] SD  SMA SMP
Levels: SD SMA SMP
# Faktor terurut (ordered)
faktor_ordered <- factor(c("SD", "SMA", "SMP"),
                         levels = c("SD", "SMP", "SMA"),
                         ordered = TRUE)
faktor_ordered
[1] SD  SMA SMP
Levels: SD < SMP < SMA

Matrix

Matriks merupakan vector yang berdimensi dua yaitu baris dan kolom. Matriks dapat dibuat dengan mengubah dimensi dari suatu vector.

Membuat matrix

Fungsi utama untuk membuat matriks adalah matrix(). Secara default, matriks dibentuk dengan cara column-wise (byrow = FALSE)— dimulai dari kolom pertama atas ke bawah, kemudian berlanjut ke kolom berikutnya. Misalnya kita akan membuat matriks berukuran 2x3

matriks1 <- matrix(1:6, nrow = 2, ncol = 3)
matriks1
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

Perhatikan bahwa pada sintaks di atas, terdapat beberapa argumen penting pada fungsi matrix(), yaitu nrow dan ncol. Apa fungsi kedua argumen ini?

Kalau kita ingin mengisi per baris, maka kita tambahkan argumen byrow = TRUE, sehingga akan mengisi baris pertama terlebih dahulu, mulai dari kiri ke kanan, dilanjutknya ke baris berikutnya.

matriks2 <- matrix(1:6, nrow = 2, ncol = 3, byrow = TRUE)
matriks2
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

Matriks dapat dibentuk secara langsung dari vector dengan cara menambahkan atribut dimensi.

matriks3 <- 1:10 
dim(matriks3) <- c(2, 5)
matriks3
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10

Cara lain membentuk matriks adalah dengan penggabungan kolom dengan fungsi cbind() dan penggabungan baris dengan fungsi rbind().

x <- 1:3
y <- 10:12
cbind(x, y)
     x  y
[1,] 1 10
[2,] 2 11
[3,] 3 12
rbind(x, y)
  [,1] [,2] [,3]
x    1    2    3
y   10   11   12

Mengakses elemen pada matriks

Elemen-elemen pada matriks dapat diakses menggunakan indeks baris dan indeks kolom dengan format: nama_matriks[baris, kolom]

Kita akan menggunakan matriks contoh berikut:

matriks4 <- matrix(1:9, nrow = 3, ncol = 3)
matriks4
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

Untuk mengambil satu elemen tertentu, maka digunakan indeks baris dan kolom.

# Mengambil elemen baris ke-2, kolom ke-3
matriks4[2, 3]
[1] 8

Untuk mengambil seluruh baris/kolom tertentu, maka gunakan indeks baris dan kosongkan indeks kolom, ataupun sebaliknya.

# Mengambil seluruh elemen baris ke-1
matriks4[1, ]
[1] 1 4 7
# Mengambil seluruh elemen kolom ke-2
matriks4[, 2]
[1] 4 5 6

Untuk mengambil beberapa baris atau kolom sekaligus, maka gunakan fungsi c() untuk memilih lebih dari satu indeks.

# Mengambil elemen baris 1 dan 3
matriks4[c(1, 3), ]
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    3    6    9
# Mengambil elemen kolom 1 dan 3
matriks4[, c(1, 3)]
     [,1] [,2]
[1,]    1    7
[2,]    2    8
[3,]    3    9

Operasi pada matrix

Transpose Matrix

Fungsi t() digunakan untuk menukar baris menjadi kolom dan sebaliknya.

# Membuat matriks 3x2
matriks5 <- matrix(1:6, nrow = 3, ncol = 2)
matriks5
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
# Transpose matriks
t(matriks5)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

Perkalian Matrix

# Membuat dua matriks 2x2
matriks5 <- matrix(c(1, 2, 3, 4), nrow = 2)
matriks6 <- matrix(c(5, 6, 7, 8), nrow = 2)

matriks5
     [,1] [,2]
[1,]    1    3
[2,]    2    4
matriks6
     [,1] [,2]
[1,]    5    7
[2,]    6    8
# Perkalian matriks5 %*% matriks6
hasil_kali <- matriks5 %*% matriks6
hasil_kali
     [,1] [,2]
[1,]   23   31
[2,]   34   46

Perkalian Matriks dengan Transpose

Vektor juga bisa dianggap sebagai matriks. Misalnya:

# Perkalian x^T x
t(matriks5) %*% matriks5
     [,1] [,2]
[1,]    5   11
[2,]   11   25
# Perkalian x x^T
matriks5 %*% t(matriks5)
     [,1] [,2]
[1,]   10   14
[2,]   14   20

Matriks Diagonal (diag())

# Membuat matriks diagonal
diag(5)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    0    0    0    0
[2,]    0    1    0    0    0
[3,]    0    0    1    0    0
[4,]    0    0    0    1    0
[5,]    0    0    0    0    1
# Mengambil elemen diagonal dari hasil_kali
diag(hasil_kali)
[1] 23 46

Matriks Invers dan Sistem Persamaan Linear

Fungsi solve() digunakan untuk mencari invers matriks dan menyelesaikan sistem persamaan linear.

# Matriks persegi
matriks7 <- matrix(c(2, 1, 1, 3), nrow = 2)

# Mencari invers matriks7
solve(matriks7)
     [,1] [,2]
[1,]  0.6 -0.2
[2,] -0.2  0.4
# Menyelesaikan sistem persamaan: matriks7*x = b
b <- c(1, 2)
solve(matriks7, b)
[1] 0.2 0.6

Nilai dan Vektor Eigen

Fungsi eigen() digunakan untuk menghitung akar ciri (eigenvalues) dan vektor ciri (eigenvectors).

# Hitung nilai dan vektor eigen dari matriks7
eigen(matriks7)
eigen() decomposition
$values
[1] 3.618034 1.381966

$vectors
          [,1]       [,2]
[1,] 0.5257311 -0.8506508
[2,] 0.8506508  0.5257311
Operasi Fungsi / Operator Kegunaan
Transpose t() Menukar baris ↔︎ kolom
Perkalian Matriks %*% Perkalian antar matriks
Perkalian xᵀx t(x) %*% x Perkalian transpose vektor dengan vektor
Perkalian xxᵀ x %*% t(x) Perkalian vektor dengan transpose vektor
Matriks Diagonal diag() - Membuat matriks diagonal
- Mengambil elemen diagonal
Invers Matriks solve() Menghitung invers matriks
Sistem Persamaan solve(A, b) Menyelesaikan sistem persamaan linear
Nilai & Vektor Eigen eigen() Menghitung eigenvalues & eigenvectors

Array

Array adalah struktur data yang dapat menampung data multidimensi.
Jika matriks hanya memiliki dua dimensi (baris × kolom), maka array bisa memiliki lebih dari dua dimensi.

Membuat array

Array dapat dibuat menggunakan fungsi array(). Kita perlu menentukan data yang ingin dimasukkan dan bentuk dimensinya melalui argumen dim.

# Membuat dua vektor
v1 <- c(5, 10, 15, 20)
v2 <- c(25, 30, 35, 40, 45, 50, 55, 60)

# Membuat array 4 x 4 x 3
arr <- array(c(v1, v2), dim = c(4, 4, 3))

arr
, , 1

     [,1] [,2] [,3] [,4]
[1,]    5   25   45    5
[2,]   10   30   50   10
[3,]   15   35   55   15
[4,]   20   40   60   20

, , 2

     [,1] [,2] [,3] [,4]
[1,]   25   45    5   25
[2,]   30   50   10   30
[3,]   35   55   15   35
[4,]   40   60   20   40

, , 3

     [,1] [,2] [,3] [,4]
[1,]   45    5   25   45
[2,]   50   10   30   50
[3,]   55   15   35   55
[4,]   60   20   40   60

Pada contoh ini, array(c(v1, v2), dim = c(4, 4, 3)) membuat array berukuran 4 × 4 × 3 atau total 48 elemen. Karena data dari v1 dan v2 hanya berjumlah 12 angka, maka R akan mengulang data secara otomatis hingga semua slot terisi. Proses pengisian array dilakukan secara column-wise, yaitu mengisi kolom pertama penuh terlebih dahulu, kemudian kolom kedua, dan seterusnya. Setelah satu lapisan penuh (16 elemen), pengisian berlanjut ke lapisan berikutnya dengan pola yang sama, sehingga data tampak berulang pada setiap dimensi array.

Mengetahui Dimensi Array

Untuk mengecek dimensi dari sebuah array, gunakan fungsi dim():

class(arr)
[1] "array"
dim(arr)
[1] 4 4 3

Artinya, objek arr memiliki 4 baris, 4 kolom, dan 3 lapisan.

Data Frame

Data frame adalah struktur data dalam R yang digunakan untuk menyimpan data dalam bentuk tabel (baris × kolom). Baris dalam data frame merepresentasikan pengamatan/observasi, sedangkan kolom merepresentasikan peubah/variabel. Setiap elemen dalam kolom yang sama memiliki mode data yang sama, namun tiap kolom dapat memiliki mode berbeda (misalnya satu kolom numerik, kolom lain karakter).

Membuat data frame

Data frame dapat dibuat menggunakan fungsi data.frame():

# Membuat vektor
nama <- c("Uccang", "Syafiq", "Ngurah", "Adib")
umur <- c(24, 25, 24, 24)
jurusan <- c("Statistika", "Matematika", "Statistika", "Matematika")

# Membuat data frame
df <- data.frame(Nama = nama, Umur = umur, Jurusan = jurusan)

# Menampilkan data frame
df
    Nama Umur    Jurusan
1 Uccang   24 Statistika
2 Syafiq   25 Matematika
3 Ngurah   24 Statistika
4   Adib   24 Matematika

Mengakses elemen pada dataframe

Ada beberapa cara untuk mengakses elemen, kolom, atau baris dalam data frame di R.

Mengakses Kolom dengan Nama Kolom

Kita menggunakan tanda $ untuk mengakses langsung kolom berdasarkan namanya:

df$Nama
[1] "Uccang" "Syafiq" "Ngurah" "Adib"  
df$Umur
[1] 24 25 24 24
df$Jurusan
[1] "Statistika" "Matematika" "Statistika" "Matematika"

Mengakses Kolom atau Baris Menggunakan Indeks

Format umumnya adalah df[baris, kolom]

Untuk mengakses kolom tertentu, misalnya kolom ke-1

df[, 1]
[1] "Uccang" "Syafiq" "Ngurah" "Adib"  

Untuk mengakses beberapa kolom

df[, c(1, 3)]
    Nama    Jurusan
1 Uccang Statistika
2 Syafiq Matematika
3 Ngurah Statistika
4   Adib Matematika

Untuk mengakses baris tertentu

df[2, ]
    Nama Umur    Jurusan
2 Syafiq   25 Matematika

Untuk mengakses elemen tertentu, misalnya baris ke-3, kolom ke-2

df[3, 2]
[1] 24

Mengakses Kolom Menggunakan Nama dalam Indeks

Selain indeks numerik, nama kolom juga bisa dipakai sebagai indeks.

df[, "Jurusan"]
[1] "Statistika" "Matematika" "Statistika" "Matematika"
df[, c("Nama", "Umur")]
    Nama Umur
1 Uccang   24
2 Syafiq   25
3 Ngurah   24
4   Adib   24

List

List merupakan bentuk khusus dari vector yang memungkinkan setiap elemennya memiliki tipe data atau struktur yang berbeda-beda. Elemen list dapat berupa vector, matriks, array, data frame, atau bahkan list lainnya. List sangat berguna ketika kita ingin menyimpan berbagai jenis objek dalam satu wadah.

Membuat list

List dapat dibuat dengan fungsi list().

# Membuat variabel tunggal
nama <- "Uccang"

# Membuat vector numerik
nilai <- c(80, 85, 90)

# Membuat matriks
matriks_nilai <- matrix(1:6, nrow = 2)

# Membuat array 3 dimensi
array_nilai <- array(1:8, dim = c(2, 2, 2))

# Membuat data frame
df_mahasiswa <- data.frame(
  nama = c("Uccang", "Syafiq", "Ngurah"),
  umur = c(24, 23, 24),
  lulus = c(TRUE, TRUE, FALSE)
)
# Membuat list berisi berbagai objek
my_list <- list(
  variabel = nama,
  vector = nilai,
  matriks = matriks_nilai,
  array = array_nilai,
  dataframe = df_mahasiswa
)

my_list
$variabel
[1] "Uccang"

$vector
[1] 80 85 90

$matriks
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

$array
, , 1

     [,1] [,2]
[1,]    1    3
[2,]    2    4

, , 2

     [,1] [,2]
[1,]    5    7
[2,]    6    8


$dataframe
    nama umur lulus
1 Uccang   24  TRUE
2 Syafiq   23  TRUE
3 Ngurah   24 FALSE

Mengakses Elemen List

Untuk mengakses isi elemen, maka digunakan [[ ]]

my_list[[1]]        # Mengambil variabel 'nama'
[1] "Uccang"
my_list[[2]]        # Mengambil vector numerik
[1] 80 85 90
my_list[[3]]        # Mengambil matriks
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
my_list[[4]]        # Mengambil array
, , 1

     [,1] [,2]
[1,]    1    3
[2,]    2    4

, , 2

     [,1] [,2]
[1,]    5    7
[2,]    6    8
my_list[[5]]        # Mengambil data frame
    nama umur lulus
1 Uccang   24  TRUE
2 Syafiq   23  TRUE
3 Ngurah   24 FALSE

Untuk mengakses elemen berdasarkan nama objek di dalam list, maka digunakan $

my_list$variabel    # Ambil variabel tunggal
[1] "Uccang"
my_list$vector      # Ambil vector numerik
[1] 80 85 90
my_list$matriks     # Ambil matriks
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
my_list$array       # Ambil array
, , 1

     [,1] [,2]
[1,]    1    3
[2,]    2    4

, , 2

     [,1] [,2]
[1,]    5    7
[2,]    6    8
my_list$dataframe   # Ambil data frame
    nama umur lulus
1 Uccang   24  TRUE
2 Syafiq   23  TRUE
3 Ngurah   24 FALSE

Untuk mengambil elemen dari suatu list sebagai list baru, maka digunakan [ ]

my_list[1]          # Mengambil list berisi variabel
$variabel
[1] "Uccang"
my_list[c(2,4)]     # Mengambil list berisi vector & array
$vector
[1] 80 85 90

$array
, , 1

     [,1] [,2]
[1,]    1    3
[2,]    2    4

, , 2

     [,1] [,2]
[1,]    5    7
[2,]    6    8

Catatan:

  • [[ ]] → Mengambil isi elemen langsung
  • [ ] → Mengambil list baru berisi elemen tersebut

Nilai-Nilai Khusus di R

Dalam R, ada beberapa nilai khusus yang sering muncul ketika bekerja dengan data atau operasi matematis. Nilai-nilai ini memiliki arti khusus dan perlu dipahami untuk menghindari kebingungan saat analisis data.

Nilai Khusus Keterangan
NULL Menunjukkan tidak ada nilai atau objek kosong.
NA Singkatan dari Not Available. Digunakan untuk missing value atau data hilang.
NaN Singkatan dari Not a Number. Biasanya muncul akibat operasi matematis yang tidak valid.
Inf Singkatan dari Infinity. Hasil dari pembagian dengan nol atau nilai sangat besar.
-Inf Negatif Infinity, biasanya dari pembagian bilangan negatif dengan nol.
# NULL → Objek kosong
obj_kosong <- NULL
obj_kosong
NULL
# NA → Missing value
data <- c(10, 20, NA, 40)
data
[1] 10 20 NA 40
# NaN → Operasi tidak valid
hasil_nan <- 0/0
hasil_nan
[1] NaN
# Inf dan -Inf → Nilai tak hingga
positif_inf <- 1/0
negatif_inf <- -1/0

positif_inf
[1] Inf
negatif_inf
[1] -Inf

Untuk mengecek apakah suatu elemen dalam vektor merupakan NA (missing value) atau NaN (Not a Number), R menyediakan fungsi is.na() dan is.nan().

# Membuat vektor dengan missing value (NA)
x <- c(1, 2, NA, 10, 3)

# Mengecek elemen mana yang NA
is.na(x)
[1] FALSE FALSE  TRUE FALSE FALSE
# Mengecek elemen mana yang NaN
is.nan(x)
[1] FALSE FALSE FALSE FALSE FALSE
# Membuat vektor dengan NaN dan NA sekaligus
x <- c(1, 2, NaN, NA, 4)

# Mengecek elemen mana yang NaN
is.nan(x)
[1] FALSE FALSE  TRUE FALSE FALSE
Aspek NA (Not Available) NaN (Not a Number)
Makna Menunjukkan nilai hilang / missing Hasil operasi matematis yang tidak valid
Contoh Data survei kosong, data belum terisi 0/0, sqrt(-1)
Fungsi cek is.na() is.nan()
Hubungan Semua NaN dianggap NA Tidak semua NA adalah NaN

Secara default, operasi pada objek yang mengandung NA akan menghasilkan NA.

# Vektor dengan NA
nilai <- c(10, 20, NA, 30)

# Menjumlahkan elemen
sum(nilai)
[1] NA
# Menghitung rata-rata
mean(nilai)
[1] NA

Untuk menghindari hasil NA, banyak fungsi di R memiliki argumen na.rm = TRUE yang artinya “hapus NA sebelum melakukan perhitungan”.

# Menghitung jumlah tanpa menyertakan NA
sum(nilai, na.rm = TRUE)
[1] 60
# Menghitung rata-rata tanpa menyertakan NA
mean(nilai, na.rm = TRUE)
[1] 20

Penamaan Objek dan Elemen dalam R

Dalam R, setiap objek maupun elemen di dalam objek dapat diberikan nama. Penamaan ini berguna untuk membuat kode lebih mudah dipahami. Ada beberapa cara memberi nama pada objek di R, baik untuk vector, list, matrix, maupun data frame.

Memberi Nama pada Elemen Vector

Untuk memberikan nama pada elemen-elemen vector, kita bisa menggunakan fungsi names().

# Membuat vector
x <- 1:3

# Mengecek nama elemen (belum ada)
names(x)
NULL
# Memberikan nama pada setiap elemen
names(x) <- c("Makassar", "Bogor", "Jambi")
x
Makassar    Bogor    Jambi 
       1        2        3 
# Mengecek nama elemen
names(x)
[1] "Makassar" "Bogor"    "Jambi"   

Memberi Nama pada Elemen List

Cara yang sama berlaku untuk list. Kita bisa menggunakan names() untuk memberikan nama pada setiap komponen list.

# Membuat list dengan beberapa objek
l <- list("A", 1:5, matrix(1:6, nrow=2), data.frame(num=c(10, 20), huruf=c("a", "b")))

# Mengecek nama elemen (belum ada)
names(l)
NULL
# Memberikan nama pada elemen list
names(l) <- c("teks", "angka", "matriks", "tabel")
l
$teks
[1] "A"

$angka
[1] 1 2 3 4 5

$matriks
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

$tabel
  num huruf
1  10     a
2  20     b
# Mengecek nama elemen list
names(l)
[1] "teks"    "angka"   "matriks" "tabel"  

Memberi Nama Kolom dan Baris pada Matrix

Nama kolom dan baris pada matriks dapat diberikan menggunakan dimnames(), atau bisa juga diatur terpisah menggunakan colnames() dan rownames().

# Membuat matriks 2x2
m <- matrix(1:4, nrow=2, ncol=2)

# Memberi nama baris dan kolom menggunakan dimnames()
dimnames(m) <- list(c("Baris1", "Baris2"), c("Kolom1", "Kolom2"))
m
       Kolom1 Kolom2
Baris1      1      3
Baris2      2      4
# Mengganti nama kolom dan baris menggunakan colnames() dan rownames()
colnames(m) <- c("X", "Y")
rownames(m) <- c("A", "B")
m
  X Y
A 1 3
B 2 4

Memberi Nama Kolom dan Baris pada Data Frame

Pada data frame, nama kolom bisa diberikan dengan names(), dan nama baris bisa diatur dengan row.names().

# Membuat data frame sederhana
nilai <- c(75, 82, 90, 88)
kota <- c("Makassar", "Bogor", "Jambi", "Makassar")
df <- data.frame(nilai, kota)
df
  nilai     kota
1    75 Makassar
2    82    Bogor
3    90    Jambi
4    88 Makassar
# Memberi nama kolom
names(df) <- c("Skor", "Kota")
df
  Skor     Kota
1   75 Makassar
2   82    Bogor
3   90    Jambi
4   88 Makassar
row.names(df) <- c("A", "B", "C", "D")

Ketika membuat data frame, R akan secara otomatis memberikan nama untuk kolom jika kita tidak menentukannya. Namun, nama default ini sering kurang rapi. Karena itu, sebaiknya memberi nama kolom secara eksplisit saat membuat data frame agar kode lebih mudah dibaca.

Operator di R

Dalam R, terdapat berbagai macam operator yang digunakan untuk melakukan operasi aritmetika, logika, perbandingan, manipulasi objek, dan penugasan.

Operator Aritmetika

Operator Keterangan Contoh Output
+ Penjumlahan 5 + 3 8
- Pengurangan 5 - 3 2
* Perkalian 5 * 3 15
/ Pembagian 10 / 2 5
^ / ** Pemangkatan 2 ^ 3 8
%% Sisa bagi (modulus) 10 %% 3 1
%/% Pembagian bulat 10 %/% 3 3
%*% Perkalian matriks A %*% B Matriks

Operator Perbandingan

Operator Keterangan Contoh Output
== Sama dengan 5 == 5 TRUE
!= Tidak sama dengan 5 != 3 TRUE
> Lebih besar 5 > 3 TRUE
< Lebih kecil 5 < 3 FALSE
>= Lebih besar sama 5 >= 5 TRUE
<= Lebih kecil sama 3 <= 5 TRUE

Operator Logika

Operator Keterangan Contoh Output
& AND elementwise c(TRUE, FALSE) & c(TRUE, TRUE) TRUE FALSE
&& AND tunggal (5 > 3) && (2 < 4) TRUE
| OR elementwise c(TRUE, FALSE) | c(FALSE, TRUE) TRUE TRUE
|| OR tunggal (5 > 3) || (2 > 4) TRUE
! NOT !TRUE FALSE

Operator Penugasan

Operator Keterangan Contoh
<- Penugasan ke kiri x <- 10
-> Penugasan ke kanan 10 -> x
= Alternatif assign x = 10
<<- Penugasan global x <<- 5

Operator Lain

Operator Keterangan Contoh
$ Mengakses elemen list/df df$kolom1
[ Mengambil subset x[1:3]
[[ Mengambil elemen tunggal list[[2]]
: Urutan angka 1:51 2 3 4 5
~ Formula statistik y ~ x

Struktur Kendali

Struktur kendali digunakan untuk mengatur alur eksekusi program berdasarkan kondisi tertentu atau perulangan proses.
Dalam R, struktur kendali dibagi menjadi dua kelompok utama:

  1. Percabangan (Conditional Statements)
  2. Perulangan (Loops)

Percabangan (Conditional Statements)

Percabangan memungkinkan program mengambil keputusan berdasarkan kondisi logika.

if

Digunakan untuk mengeksekusi kode jika kondisi bernilai TRUE. Bentuk umum dari if adalah

if (expression) {
   statement
}
num <- 5

if (num >= 0) {
  print("Positive")
}
[1] "Positive"

Jika kondisi bernilai FALSE, maka tidak ada perintah yang dieksekusi.

if (num <= 0) {
  print("Not Positive Number")
}

if else

Digunakan untuk mengeksekusi salah satu dari dua blok kode berdasarkan kondisi.
Jika kondisi TRUE, maka blok pertama dijalankan, sedangkan jika FALSE, blok kedua dijalankan. Bentuk umum:

if (expression) {
   statement1
} else {
   statement2
}
num <- -5
if(num > 0){
   print("Non Negative")
} else {
   print("Negative")
}
[1] "Negative"

Kode di atas memiliki makna yang sama dengan kode di bawah ini, namun penulisan di atas lebih ringkas.

if(num > 0){
  print("Non Negative")
}

if(num < 0){
  print("Negative")
}
[1] "Negative"

if else if

Digunakan untuk memeriksa beberapa kondisi secara berurutan.
Jika kondisi pertama tidak terpenuhi, maka kondisi kedua akan diperiksa, dan seterusnya. Bentuk umum:

if (kondisi1) {
   statement1
} else if (kondisi2) {
   statement2
} else if (kondisi3) {
  statement3
}
num <- -5

if (num > 0) {
   print("Positive")
} else if (num < 0) {
   print("Negative")
} else if (num == 0) {
   print("Zero")
}
[1] "Negative"

Jika ada banyak kondisi yang perlu dicek, maka struktur if else if dapat dibuat sepanjang kebutuhan. Penyusunan kondisi perlu dengan urutan yang logis agar kode lebih mudah dibaca dan dipahami.

Perulangan (Loops)

Perulangan digunakan untuk menjalankan blok kode secara berulang sampai kondisi tertentu tercapai.
Dalam R, terdapat tiga jenis utama perulangan:

  1. for loop
  2. while loop
  3. repeat loop

Selain itu, terdapat juga perintah break dan next untuk mengontrol proses perulangan.

for loop

for loop digunakan untuk mengiterasi elemen dalam sebuah vektor atau urutan tertentu. Bentuk umum:

for (val in sequence) {
   statement
}
angka <- c(2, 5, 8, 11, 14)
total <- 0

for (nilai in angka) {
   total <- total + nilai
}
print(paste("Total penjumlahan:", total))
[1] "Total penjumlahan: 40"

while loop

while loop digunakan untuk menjalankan perintah selama kondisi tertentu masih TRUE. Bentuk umum:

while (kondisi) {
   statement
}
i <- 1
while (i <= 5) {
   print(paste("Iterasi ke-", i))
   i <- i + 1
}
[1] "Iterasi ke- 1"
[1] "Iterasi ke- 2"
[1] "Iterasi ke- 3"
[1] "Iterasi ke- 4"
[1] "Iterasi ke- 5"

Kode dibawah tidak akan menghasilkan output apa pun karena kondisi pada while-loop langsung bernilai FALSE sejak awal.

i <- 10
while (i <= 5) {
   print(paste(i))
   i <- i + 1
}

break dan next

Dalam R, dua perintah penting yang sering digunakan di dalam perulangan adalah break dan next. Keduanya berfungsi mengontrol alur perulangan, namun cara kerjanya berbeda.

  • break → Menghentikan perulangan sepenuhnya dan keluar dari loop.
  • next → Melewati iterasi saat ini dan langsung melanjutkan ke iterasi berikutnya.

Misalnya, kita ingin menghentikan loop saat menemukan angka ganjil pertama.

# Menghentikan loop ketika menemukan angka ganjil pertama yang lebih dari 11
angka <- 1:100

for (i in angka) {
  if (i > 11 && i %% 2 != 0) {
    print(paste("Angka ganjil pertama yang lebih dari 11 ditemukan:", i))
    break  # Menghentikan perulangan
  }
  print(paste("Angka genap atau angka <= 10:", i))
}
[1] "Angka genap atau angka <= 10: 1"
[1] "Angka genap atau angka <= 10: 2"
[1] "Angka genap atau angka <= 10: 3"
[1] "Angka genap atau angka <= 10: 4"
[1] "Angka genap atau angka <= 10: 5"
[1] "Angka genap atau angka <= 10: 6"
[1] "Angka genap atau angka <= 10: 7"
[1] "Angka genap atau angka <= 10: 8"
[1] "Angka genap atau angka <= 10: 9"
[1] "Angka genap atau angka <= 10: 10"
[1] "Angka genap atau angka <= 10: 11"
[1] "Angka genap atau angka <= 10: 12"
[1] "Angka ganjil pertama yang lebih dari 11 ditemukan: 13"

Jika kita ingin melewati angka ganjil dan hanya menampilkan angka genap

# Melewati angka ganjil dan hanya mencetak angka genap
angka <- 1:10

for (i in angka) {
  if (i %% 2 != 0) {
    next  # Lewati angka ganjil
  }
  print(paste("Angka genap:", i))
}
[1] "Angka genap: 2"
[1] "Angka genap: 4"
[1] "Angka genap: 6"
[1] "Angka genap: 8"
[1] "Angka genap: 10"

Contoh berikut menunjukkan penggunaan break dan next pada while-loop untuk melewati angka ganjil dan menghentikan perulangan ketika nilai mencapai 8.

# Contoh penggunaan break dan next pada while-loop
i <- 1
while (i <= 10) {
  if (i %% 2 != 0) {
    i <- i + 1
    next  # Lewati angka ganjil
  }
  print(paste("Angka genap:", i))
  
  if (i == 8) {
    print("Berhenti di angka 8")
    break  # Hentikan loop jika i = 8
  }
  i <- i + 1
}
[1] "Angka genap: 2"
[1] "Angka genap: 4"
[1] "Angka genap: 6"
[1] "Angka genap: 8"
[1] "Berhenti di angka 8"

repeat loop

repeat loop digunakan untuk menjalankan perintah tanpa batas sampai ada perintah break. Bentuk umum

repeat {
   statement
   if (kondisi) {
      break
   }
}

Misalnya, kita ingin mencetak nilai yang dimulai dari angka 1 dan berhenti apabila nilainya sudah lebih dari 5.

x <- 1
repeat {
   print(x)
   x <- x + 1
   if (x > 5) {
      break
   }
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

Jika kita ingin mencetak nilai yang dimulai dari angka 1 dan berhenti apabila nilainya sudah lebih dari 5, tetapi kita tidak ingin mencetak angka 3.

x <- 1
repeat {
  if (x == 3) {
    x <- x + 1
    next  # Lewati angka 3
  }
  
  print(paste("Angka:", x))
  x <- x + 1
  if (x > 5) {
    break  # Hentikan loop jika x > 5
  }
}
[1] "Angka: 1"
[1] "Angka: 2"
[1] "Angka: 4"
[1] "Angka: 5"

Catatan

Belajar R bukan hanya tentang menulis kode, tapi tentang eksplorasi. Jangan ragu untuk bereksperimen, karena setiap langkah membawa kita lebih dekat pada pemahaman. Temukan pola, cobalah berbagai cara, dan biarkan proses trial and error menuntunmu untuk belajar dan berkembang.


Referensi Tambahan

Muhammad Yusran
Program Studi Magister Statistika dan Sains Data
Sekolah Sains Data, Matematika, dan Informatika
IPB University

Email: muhammadyusran@apps.ipb.ac.id
LinkedIn: Muhammad Yusran
Instagram: mhammad.yusran_