x <- 1
2 -> y
z = 3
Itulah ke-3 cara untuk memasukkan nilai ke sebuah variabel, khusus
tanda ->, variabel berada di sebelah kanan.
Untuk menampilkan variabel, kita bisa langsung mengetik nama variabel yang telah dibuat.
x
## [1] 1
Atau bisa juga menggunakan fungsi print() dan
cat():
print(y)
## [1] 2
cat(z)
## 3
Pada contoh sebelumnya, kita mempunyai objek dengan nama x, y, z. Namun, ada beberapa aturan penting dalam penamaan objek di R yang harus diperhatikan:
!, @,
#, %, &, dll.c, q, s,
t, diff, length,
mean, dll.TRUE, FALSE,
Inf, NA, NaN, NULL,
break, else, for, dll.ABC <- 5
ABC
## [1] 5
abc <- 3
abc
## [1] 3
Selalu perhatikan huruf besar dan kecil (case-sensitive) karena
variabel ABC dan abc itu berbeda.
Working Directory (folder kerja) adalah lokasi atau direktori aktif tempat R menjalankan semua proses saat ini.
Untuk mengecek working directory yang sedang digunakan, gunakan
fungsi getwd():
getwd()
## [1] "C:/Users/Hype/Belajar R"
Output menampilkan folder kerja yang sedang digunakan.
Untuk mengganti working directory, kita dapat menggunakan fungsi
setwd():
setwd("C:\\Users\\Hype\\Documents")
getwd()
## [1] "C:/Users/Hype/Documents"
Pada Windows, path folder biasanya ditulis dengan backslash
(\). Namun di R, ada dua cara yang benar.
📌 Tips:
/) agar lebih aman.\), tulis ganda
(\\).R memiliki beberapa jenis mode objek dasar (atomic class). Tipe data ini menentukan bagaimana nilai disimpan dan bagaimana R memprosesnya.
| Tipe Data | Contoh Nilai | Keterangan |
|---|---|---|
character |
"jokowi", "prabowo",
"gibran" |
Berisi teks atau string |
numeric |
58, 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
Presiden <- "Prabowo"
# Tipe numeric
angka <- 58
# Tipe complex
bilangan_kompleks <- 3 + 2i
# Tipe logical
lulus <- TRUE
# character
class(Presiden)
## [1] "character"
# numeric
class(angka)
## [1] "numeric"
# complex
class(bilangan_kompleks)
## [1] "complex"
# logical
class(lulus)
## [1] "logical"
Secara default, angka di R dianggap numeric (bilangan real/desimal).
Jika ingin membuat integer, tambahkan akhiran L.
A <- 5
y <- 9L
class(A)
## [1] "numeric"
class(y)
## [1] "integer"
Walaupun 5 terlihat seperti bilangan bulat, R tetap menyimpannya sebagai numeric (5.00).
Dalam R, string ditulis dengan tanda kutip (" " atau
' '). Beberapa fungsi penting:
1. Menghitung Jumlah Karakter →
nchar()
teks <- "Belajar R itu menyenangkan!"
nchar(teks)
## [1] 27
2. Menggabungkan String → paste() dan
paste0()
nama_depan <- "Prabowo"
nama_belakang <- "Subianto"
# Menggabungkan dengan spasi
paste(nama_depan, nama_belakang)
## [1] "Prabowo Subianto"
# Menggabungkan tanpa spasi
paste0(nama_depan, nama_belakang)
## [1] "PrabowoSubianto"
3. Mengambil Bagian dari String → substr() dan
substring()
substr(teks, start, stop) → ambil karakter dari posisi
start sampai stop.substring(teks, first, last) → ambil karakter mulai
first sampai last (jika last kosong, sampai akhir).teks <- "Koperasi Desa Merah Putih"
# Menggunakan substr(): ambil karakter ke-1 sampai ke-8
substr(teks, start = 1, stop = 8)
## [1] "Koperasi"
# Menggunakan substring(): mulai karakter ke-15 sampai akhir
substring(teks, first = 15)
## [1] "Merah Putih"
# substring juga bisa dibatasi sampai indeks tertentu
substring(teks, first = 15, last = 19)
## [1] "Merah"
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 adalah struktur data paling dasar di R. Semua elemen di dalam vector harus bertipe sama: numerik, karakter, atau logika. Ada tiga fungsi utama untuk membuat vector:
a. c() — Combine
angka <- c(1, 2, 3, 4, 5) # numerik
nama <- c("Prabowo", "Teddy") # karakter
lulus <- c(TRUE, FALSE, TRUE) # logika
angka
## [1] 1 2 3 4 5
nama
## [1] "Prabowo" "Teddy"
lulus
## [1] TRUE FALSE TRUE
b. ‘seq()’ - Sequence
bilangan <- seq(1, 10, by = 2)
bilangan
## [1] 1 3 5 7 9
c. ‘rep()’ - Repeat
rep(c(1, 2, 3), times = 2)
## [1] 1 2 3 1 2 3
rep(c(1, 2, 3), each = 2)
## [1] 1 1 2 2 3 3
Factor digunakan untuk menyimpan data kategorik (misalnya tingkat pendidikan, jenis kelamin, kepuasan).
pendidikan <- factor(c("SD", "SMP", "SMA", "SD"))
pendidikan
## [1] SD SMP SMA SD
## Levels: SD SMA SMP
Jika ingin level terurut:
factor(pendidikan, levels = c("SD", "SMP", "SMA"), ordered = TRUE)
## [1] SD SMP SMA SD
## Levels: SD < SMP < SMA
Factor penting untuk analisis statistik karena R memperlakukan kategori sebagai objek khusus, bukan sekadar string.
Ringkasan Vector dan 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 |
| Perbandingan Nilai | Tidak bisa dibandingkan (>,
< error) |
Tidak bisa dibandingkan | Bisa dibandingkan (SMA > SMP →
TRUE) |
| Kapan Digunakan | Menyimpan teks biasa tanpa analisis kategori | Data kategorik tanpa hierarki, misalnya warna | Data kategorik dengan hierarki, misalnya pendidikan |
Matriks merupakan vektor berdimensi dua (baris dan kolom). Di R,
matriks bisa dibentuk menggunakan fungsi matrix(),
penggabungan kolom/baris (cbind(), rbind()),
atau menambahkan atribut dimensi (dim()).
Membuat Matrix
# Matriks 2x3 (default column-wise)
matriks1 <- matrix(1:6, nrow = 2, ncol = 3)
matriks1
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
# Matriks 2x3 (row-wise)
matriks2 <- matrix(1:6, nrow = 2, ncol = 3, byrow = TRUE)
matriks2
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
Mengakses Elemen
Elemen matriks dapat diakses dengan format
[baris, kolom].
matriks4 <- matrix(1:9, nrow = 3, ncol = 3)
# Mengambil elemen baris ke-2 kolom ke-3
matriks4[2, 3]
## [1] 8
# Mengambil seluruh baris pertama
matriks4[1, ]
## [1] 1 4 7
# Mengambil seluruh kolom kedua
matriks4[, 2]
## [1] 4 5 6
# Mengambil baris 1 dan 3
matriks4[c(1, 3), ]
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 3 6 9
Operasi Matrix
| Operasi | Fungsi/Operator | Kegunaan |
|---|---|---|
| Transpose | t() |
Menukar baris ↔︎ kolom |
| Perkalian Matriks | %*% |
Perkalian antar matriks |
| Matriks Diagonal | diag() |
Membuat matriks diagonal / mengambil elemen diagonal |
| Invers Matriks | solve(A) |
Menghitung invers matriks persegi |
| Sistem Persamaan Linear | solve(A, b) |
Menyelesaikan sistem persamaan linear |
| Nilai & Vektor Eigen | eigen(A) |
Menghitung eigenvalues & eigenvectors |
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.
Array dibuat menggunakan fungsi array(), dengan
menentukan data dan bentuk dimensinya melalui argumen
dim.
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
Karena data v1 dan v2 hanya berjumlah 12 angka sedangkan array membutuhkan 48 elemen, R akan mengulang data secara otomatis (column-wise) hingga semua slot terisi.
Untuk mengecek dimensi 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 adalah struktur data dalam R yang digunakan untuk menyimpan data dalam bentuk tabel (baris × kolom). Baris merepresentasikan pengamatan/observasi, sedangkan kolom merepresentasikan peubah/variabel. Tiap kolom dapat memiliki mode berbeda (misalnya satu kolom numerik, kolom lain karakter).
Membuat Data Frame
nama_mhs <- c("Joko", "Gibran", "Ngurah", "Adib")
umur <- c(24, 25, 24, 24)
jurusan <- c("Kehutanan", "Manajemen", "Statistika", "Matematika")
df <- data.frame(Nama = nama_mhs, Umur = umur, Jurusan = jurusan)
df
## Nama Umur Jurusan
## 1 Joko 24 Kehutanan
## 2 Gibran 25 Manajemen
## 3 Ngurah 24 Statistika
## 4 Adib 24 Matematika
Mengakses Elemen pada Data Frame
Mengakses kolom dengan tanda $:
df$Nama
## [1] "Joko" "Gibran" "Ngurah" "Adib"
Mengakses dengan indeks, format df[baris, kolom]:
# Mengambil kolom pertama
df[, 1]
## [1] "Joko" "Gibran" "Ngurah" "Adib"
# Mengambil beberapa kolom
df[, c(1, 3)]
## Nama Jurusan
## 1 Joko Kehutanan
## 2 Gibran Manajemen
## 3 Ngurah Statistika
## 4 Adib Matematika
# Mengambil baris tertentu
df[2, ]
## Nama Umur Jurusan
## 2 Gibran 25 Manajemen
# Mengakses kolom dengan nama sebagai indeks
df[, "Jurusan"]
## [1] "Kehutanan" "Manajemen" "Statistika" "Matematika"
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.
Membuat List
nama_tunggal <- "Tedi"
nilai_vec <- c(65, 55, 70)
matriks_nilai <- matrix(1:6, nrow = 2)
my_list <- list(variabel = nama_tunggal, vector = nilai_vec, matriks = matriks_nilai)
my_list
## $variabel
## [1] "Tedi"
##
## $vector
## [1] 65 55 70
##
## $matriks
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
Mengakses Elemen List
# Mengambil isi elemen langsung
my_list[[1]]
## [1] "Tedi"
# Mengambil elemen berdasarkan nama
my_list$vector
## [1] 65 55 70
# Mengambil sebagai list baru
my_list[1]
## $variabel
## [1] "Tedi"
Catatan: [[ ]] mengambil isi elemen secara langsung,
sedangkan [ ] mengambil list baru yang berisi elemen
tersebut.
Dalam R, ada beberapa nilai khusus yang sering muncul ketika bekerja dengan data atau operasi matematis:
| Nilai Khusus | Keterangan |
|---|---|
NULL |
Menunjukkan tidak ada nilai atau objek kosong |
NA |
Singkatan dari Not Available; digunakan untuk missing value/data hilang |
NaN |
Singkatan dari Not a Number; muncul akibat operasi matematis yang tidak valid |
Inf |
Singkatan dari Infinity; hasil dari pembagian dengan nol |
-Inf |
Negatif Infinity; biasanya dari pembagian bilangan negatif dengan nol |
# 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
nilai_na <- c(10, 20, NA, 30)
# Menjumlahkan elemen (menghasilkan NA)
sum(nilai_na)
## [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, na.rm = TRUE)
## [1] 60
# Menghitung rata-rata tanpa menyertakan NA
mean(nilai_na, na.rm = TRUE)
## [1] 20
Selain objek itu sendiri, elemen di dalam suatu objek juga bisa diberi nama agar kode lebih mudah dipahami — baik untuk vector, list, matrix, maupun data frame.
Memberi Nama pada Elemen Vector
kota_vec <- 1:3
names(kota_vec) <- c("Makassar", "Bogor", "Jambi")
kota_vec
## Makassar Bogor Jambi
## 1 2 3
Memberi Nama pada Elemen List
l <- list("A", 1:5)
names(l) <- c("teks", "angka")
l
## $teks
## [1] "A"
##
## $angka
## [1] 1 2 3 4 5
Memberi Nama Kolom dan Baris pada Matrix
Nama kolom dan baris pada matriks dapat diberikan dengan
dimnames(), atau terpisah menggunakan
colnames() dan rownames().
m <- matrix(1:4, nrow = 2, ncol = 2)
dimnames(m) <- list(c("Baris1", "Baris2"), c("Kolom1", "Kolom2"))
m
## Kolom1 Kolom2
## Baris1 1 3
## Baris2 2 4
Memberi Nama Kolom dan Baris pada Data Frame
Nama kolom diberikan dengan names(), dan nama baris
dengan row.names().
nilai_df <- c(75, 82, 90, 88)
kota_df <- c("Bandung", "Bogor", "Jatinangor", "Bekasi")
df2 <- data.frame(nilai_df, kota_df)
names(df2) <- c("Skor", "Kota")
df2
## Skor Kota
## 1 75 Bandung
## 2 82 Bogor
## 3 90 Jatinangor
## 4 88 Bekasi
Dalam R, terdapat berbagai macam operator yang digunakan untuk melakukan operasi aritmetika, logika, perbandingan, manipulasi objek, dan penugasan.
| 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 | 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 dengan | 5 >= 5 |
TRUE |
<= |
Lebih kecil sama dengan | 3 <= 5 |
TRUE |
| Operator | Keterangan | Contoh |
|---|---|---|
& |
AND elementwise | c(TRUE, FALSE) & c(TRUE, TRUE) |
&& |
AND tunggal | (5 > 3) && (2 < 4) |
\| |
OR elementwise | c(TRUE, FALSE) \| c(FALSE, TRUE) |
\|\| |
OR tunggal | (5 > 3) \|\| (2 > 4) |
! |
NOT | !TRUE |
Operator & dan | bekerja per elemen,
sedangkan && dan || hanya mengevaluasi
elemen pertama (lebih hemat waktu).
| Operator | Keterangan | Contoh |
|---|---|---|
<- |
Penugasan ke kiri | x <- 10 |
-> |
Penugasan ke kanan | 10 -> x |
= |
Alternatif assign | x = 10 |
<<- |
Penugasan global | x <<- 5 |
| Operator | Keterangan | Contoh |
|---|---|---|
$ |
Mengakses elemen list/data frame | df$kolom1 |
[ |
Mengambil subset | x[1:3] |
[[ |
Mengambil elemen tunggal | list[[2]] |
: |
Urutan angka | 1:5 → 1 2 3 4 5 |
~ |
Formula statistik | y ~ x |
Struktur kendali digunakan untuk mengatur alur eksekusi program berdasarkan kondisi tertentu atau perulangan proses. Dalam R, struktur kendali dibagi menjadi dua kelompok utama: percabangan (conditional statements) dan perulangan (loops).
if
Digunakan untuk mengeksekusi kode jika kondisi bernilai
TRUE. Bentuk umum:
if (expression) { statement }.
num <- 5
if (num >= 0) {
print("Positive")
}
## [1] "Positive"
Jika kondisi bernilai FALSE, maka tidak ada perintah
yang dieksekusi.
if else
Digunakan untuk mengeksekusi salah satu dari dua blok kode
berdasarkan kondisi. Bentuk umum:
if (expression) { statement1 } else { statement2 }.
num <- -5
if (num > 0) {
print("Non Negative")
} else {
print("Negative")
}
## [1] "Negative"
if else if
Digunakan untuk memeriksa beberapa kondisi secara berurutan. 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"
Perulangan digunakan untuk menjalankan blok kode secara berulang
sampai kondisi tertentu tercapai. Dalam R terdapat tiga jenis utama
perulangan: for, while, dan
repeat, ditambah perintah break dan
next untuk mengontrol prosesnya.
for loop
Digunakan untuk mengiterasi elemen dalam sebuah vektor atau urutan
tertentu. Bentuk umum:
for (val in sequence) { statement }.
angka_for <- c(2, 5, 8, 11, 14)
total <- 0
for (nilai in angka_for) {
total <- total + nilai
}
print(paste("Total penjumlahan:", total))
## [1] "Total penjumlahan: 40"
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"
break dan next
break menghentikan perulangan sepenuhnya dan keluar dari
loop, sedangkan next melewati iterasi saat ini dan langsung
melanjutkan ke iterasi berikutnya.
# Melewati angka ganjil dan hanya mencetak angka genap
for (i in 1:10) {
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"
repeat loop
Digunakan untuk menjalankan perintah tanpa batas sampai ada perintah
break. Bentuk umum:
repeat { statement; if (kondisi) { break } }.
x_rep <- 1
repeat {
print(x_rep)
x_rep <- x_rep + 1
if (x_rep > 5) {
break
}
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5