Bab 6 Array dan List


6.1 Tujuan Pembelajaran

CPMK 6

Mahasiswa mampu memahami tipe data list dan array dan menerapkannya untuk analisis data dalam R.

Sub-CPMK 6

Mahasiswa mampu menganalisis tipe data list dan array untuk memecahkan masalah dalam R.

Deskripsi Isi Bahan Ajar

Bab 6 ini membahas tentang:

  1. Array.
  2. List.

Waktu Pembelajaran

Alokasi Waktu = 3 x 50 menit (3 SKS)

Kegiatan Alokasi Waktu
Ceramah dan Diskusi Interaktif 20 menit
Praktik Array dan List pada R 50 menit
Konsultasi Praktik R 50 menit
Presentasi individu 30 menit

Petunjuk Penggunaan Bahan Ajar

  1. Langkah-langkah pembelajaran.
    Pelajari tipe data array dan list dalam pemrograman R. Terapkan pengetahuan Anda pada contoh-contoh kasus yang telah disajikan secara individu kolaboratif. Konsultasikanlah kesulitan Anda selama praktik pada pengajar mata kuliah ini. Anda bisa bekerja dengan IDE RStudio secara offline maupun online.

  2. Sumber Belajar yang Dibutuhkan.
    Laptop (Notebook), jaringan internet

Tujuan Akhir (Performance Objective)

Setelah menyelesaikan modul ini, mahasiswa mampu memahami operasi pemrograman dengan tipe data array dan list.

6.2 Pendahuluan

Pada Bab 3 dan 5 sebelumnya, kita pernah berinteraksi dengan beberapa objek R berupa vektor (dibuat dengan fungsi c()) dan matriks (dibuat dengan fungsi matrix()). Kita juga telah belajar bagaimana melakukan operasi matematika terhadap vektor dan matriks. Sebagai penyegaran awal, apakah kamu masih ingat tentang perbedaan utama dari tipe data vektor dan matriks? Bagaimana hubungan keduanya?

Vektor dapat dikatakan adalah kasus khusus dari matriks 1 dimensi. Vektor merupakan kumpulan bilangan atau karakter yang disusun berdasarkan aturan matriks 1 dimensi. Pada bab ini, kita akan memperluas tipe data karena kadang-kadang kita membutuhkan kumpulan vektor dan/ atau matriks. Objek R yang dapat memfasilitasi tujuan ini adalah array dan list. Array adalah kumpulan matriks dengan tipe data yang sama sedangkan List dapat menyimpan beberapa tipe data dalam sebuah objek R. Objek array dibuat menggunakan fungsi array() dan objek list ditulis dengan menggunakan fungsi list(). Sebuah list juga bisa menyimpan matriks atau fungsi sebagai elemen penyusunnya.

Contoh:

contoh_vektor <- c(1,2,3)
contoh_vektor
## [1] 1 2 3
contoh_matriks <- matrix(c(1,2,3,4), ncol=2, nrow=2)
contoh_matriks
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4

6.3 Array

Array adalah struktur data fundamental dalam bahasa pemrograman untuk menyimpan nilai data dengan tipe data yang sama. Dalam konteks bahasa pemrograman R, array menjadi alat yang sangat bermanfaat untuk mengelola dan menganalisis data secara lebih efisien. Dalam bab ini, kita akan memperluas pengetahuan kita tentang array.

Array adalah sebuah vektor dengan satu atau lebih dimensi. Array 1 dimensi (1D) sehingga disebut juga sebagai vektor.

Membuat Array

Di R, sebuah array adalah objek multidimensi yang dapat menyimpan data dengan tipe data yang sama. Array sebenarnya merupakan kelanjutan konsep dari vektor dan matriks, yang membolehkan kita untuk menyimpan dan manipulasi data yang memiliki lebih dari dua dimensi. Array di dalam R sangat bermanfaat ketika kita berurusan dengan banyak jenis dataset dengan tipe yang sama.

Untuk membuat array kita bisa mengikuti sintaks di bawah ini. Batasannya array() hanya menyimpan tipe data.

Syntax:

array(data, dim=c(dim1, dim2, ...))

Argumen data adalah nilai data yang ingin disimpan di dalam objek array, dan dim adalah vektor yang menjelaskan dimensi dari array kita. Argumen dim adalah opsional, namun kita bisa mendefinisikan secara eksplisit. Jika argumen dim tidak dispesifikasikan, R akan menyimpulkan bahwa dimensinya berdasarkan panjang dari argumen data.

Contoh:

Hasilnya adalah dua matriks yang disimpan dalam objek result dengan dimensi 3 baris dan 3 kolom.

v1 <- c(1,2,3,4,5,6,7,8,9)
v2 <- c(4,5,6,7,8,9,10,11,12)

result <- array(c(v1,v2),dim = c(3,3,2))
result
## , , 1
## 
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
## 
## , , 2
## 
##      [,1] [,2] [,3]
## [1,]    4    7   10
## [2,]    5    8   11
## [3,]    6    9   12

Memberi Nama Elemen Array

Argumen dim berfungsi untuk mendefinisikan jumlah indeks maksimum pada setiap dimensi. Terdapat sintaks yang lebih umum sebagai kerangka utama dari fungsi array().

Syntax:

array(data, dim = (rows, colums, matrices, dimnames))

Kita bisa memberi nama baris, kolom, dan matriks dalam sebuah array. Kita bisa mengembangkan contoh kode yang telah kita tuliskan di atas.

v1 <- c(1,2,3,4,5,6,7,8,9)
v2 <- c(4,5,6,7,8,9,10,11,12)

col.names <- c("K1","K2","K3")
row.names <- c("B1","B2","B3")
matrix.names <- c("Matriks 1","Matriks 2")

result <- array(c(v1,v2),dim = c(3,3,2),dimnames = list(row.names,col.names,matrix.names))
result
## , , Matriks 1
## 
##    K1 K2 K3
## B1  1  4  7
## B2  2  5  8
## B3  3  6  9
## 
## , , Matriks 2
## 
##    K1 K2 K3
## B1  4  7 10
## B2  5  8 11
## B3  6  9 12

Mengakses Elemen Array

Mengakses elemen dari array mungkin agak membingungkan, tetapi kita bisa mencoba untuk mempelajarinya. Kerangka sintaks dari kode R mengikuti aturan sebagai berikut.

Syntax:

result[row,column,matrix]

Terdapat beberapa argumen pada sintaks ini. Jika kita melewatkan salah satu atau beberapa argumen ini, R akan mengeluarkan semua matriks, baris, dan kolom.

Sebagai contoh, kita ingin mengakses nilai dari matriks pada baris dan kolom tertentu.

Contoh:

Hasil ini mengeluarkan nilai dari matriks pada baris pertama dan kolom kedua.

result[1,2,]
## Matriks 1 Matriks 2 
##         4         7

Berikut ini adalah contoh kode untuk mengakses nilai dari matriks pada kolom ketiga.

result[,3,]
##    Matriks 1 Matriks 2
## B1         7        10
## B2         8        11
## B3         9        12

Berikut ini adalah contoh kode untuk mengakses nilai dari setiap matriks.

result[,,1]
##    K1 K2 K3
## B1  1  4  7
## B2  2  5  8
## B3  3  6  9
result[,,2]
##    K1 K2 K3
## B1  4  7 10
## B2  5  8 11
## B3  6  9 12

6.4 List

Sebuah list (atau “daftar” dalam bahasa Indonesia) merupakan objek R yang terdiri dari kumpulan objek tersusun dalam satu dimensi yang heterogen. Oleh karena itu, suatu objek list dapat menyimpan banyak tipe data seperti vektor, matriks, fungsi, dan lain-lain.

List adalah sebuah “vektor” yang menyimpan tipe data yang heterogen. Objek list dapat dibuat dengan fungsi list(). Untuk mengakses isi dari objek list, R menerapkan sistem indeks yang dimulai dari angka “1”, tidak seperti bahasa pemrograman lainnya yang menggunakan “0” untuk indeks awalnya.

Membuat List

Untuk membuat list di R, kita gunakan fungsi list(). Dengan kata lain, list adalah vektor umum yang mengandung elemen data yang heterogen. Untuk mengilustrasikan contoh dari list, perhatikan contoh di bawah ini. Kita ingin membuat list untuk menyimpan data siswa dalam sistem informasi sekolah. Untuk hal tersebut, kita menyimpan data siswa berupa “id”, “nama siswa”, “umur”, dan lain-lain. Kita gunakan R untuk menerapkan contoh kasus ini. Kita bisa membuat data string, numeric, vektor, dan Boolean dengan objek list.

Contoh:

id <- c("A001", "A002", "A003")
nama_siswa <- c("Andi", "Bunga", "Candra")
umur_siswa <- c(12, 13, 14)

data_siswa <- list(id, nama_siswa, umur_siswa)

data_siswa
## [[1]]
## [1] "A001" "A002" "A003"
## 
## [[2]]
## [1] "Andi"   "Bunga"  "Candra"
## 
## [[3]]
## [1] 12 13 14

Kita juga bisa menuliskan kode di atas dengan cara lebih sederhana dan efisien seperti di bawah ini. Sama saja!

Contoh:

data_siswa <- list(c("A001", "A002", "A003"),
                   c("Andi", "Bunga", "Candra"),
                   c(12, 13, 14))

data_siswa
## [[1]]
## [1] "A001" "A002" "A003"
## 
## [[2]]
## [1] "Andi"   "Bunga"  "Candra"
## 
## [[3]]
## [1] 12 13 14

Memberi Nama Elemen List

Untuk memberikan nama setiap elemen data yang membentuk list kita bisa menggunakan fungsi names().

Contoh:

names(data_siswa) <- c("Nomor Induk", "Nama Siswa", "Umur")

data_siswa
## $`Nomor Induk`
## [1] "A001" "A002" "A003"
## 
## $`Nama Siswa`
## [1] "Andi"   "Bunga"  "Candra"
## 
## $Umur
## [1] 12 13 14

Mengakses Elemen List

Sekarang kita akan mempelajari bagaimana untuk mengakses isi data dari objek list. Untuk mengaksesnya kita harus memahami konsep dari indeksasi dalam pemrograman R.

Nomor induk siswa merupakan data pertama dari objek yang bernama “data_siswa” di atas. Oleh karena itu, untuk mengakses data nomor induk siswa, kita gunakan indeks “1” untuk mengakses data pertama dari list “data_siswa” yang dimasukkan di dalam kurung tegak [].

Contoh:

data_siswa[1]
## $`Nomor Induk`
## [1] "A001" "A002" "A003"

Jika data semakin besar kadang-kadang kita lupa nomor indeksasinya dan kita hanya mengingat judul datanya. Kita bisa menggunakan tanda dollar $ diikuti dengan string judul data yang cocok dengan nama elemen listnya.

Contoh:

data_siswa$"Nomor Induk"
## [1] "A001" "A002" "A003"

List sebenarnya adalah sebuah vektor tetapi berbeda dibandingkan dengan tipe vektor yang lain.

  • Vektor lainnya adalah vektor atomik.
  • List adalah jenis vektor yang disebut juga sebagai vektor rekursif.

Terdapat beberapa operasi yang bisa kamu lakukan dengan list.

Membagi Isian List

Suatu saat dalam sebuah proyek analisis data, kita ingin menganalisis “subset” atau sebagian karakteristik dari isian data kita. Misalkan kita ingin menganalisis beberapa tipe data saja maka kita perlu membagi isian list untuk keperluan pekerjaan kita ini.

Contoh:

Sekarang kita hanya ingin menampikan data nomor induk siswa dan umurnya saja.

data_siswa[c(1,3)]
## $`Nomor Induk`
## [1] "A001" "A002" "A003"
## 
## $Umur
## [1] 12 13 14

Seperti yang pernah kita pelajari sebelumnya, base R telah menyediakan data list secara default. Berikut ini adalah list yang disediakan oleh base R.

  • letters
  • LETTERS
  • month.abb
  • month.name

Contoh:

letters[c(1,3,5,7)]
## [1] "a" "c" "e" "g"
LETTERS[c(1,3,5,7)]
## [1] "A" "C" "E" "G"
month.abb[c(1,3,5,7)]
## [1] "Jan" "Mar" "May" "Jul"
month.name[c(1,3,5,7)]
## [1] "January" "March"   "May"     "July"

Menambah Isi dari List

Misalkan kita ingin menambahkan identitas siswa lainnya pada list “data_siswa” seperti data jenis kelamin. Kemudian kita update nama variabel dari data ini dengan menambah indeks menjadi [4].

Contoh:

data_siswa[4] <- list(c("L", "P", "L"))
names(data_siswa)[4] <- c("Jenis Kelamin")

data_siswa
## $`Nomor Induk`
## [1] "A001" "A002" "A003"
## 
## $`Nama Siswa`
## [1] "Andi"   "Bunga"  "Candra"
## 
## $Umur
## [1] 12 13 14
## 
## $`Jenis Kelamin`
## [1] "L" "P" "L"

Menghapus Elemen List

Jika kita ingin menghapus elemen list, kita dapat menggunakan tanda minus (-) diikuti dengan indeks dari elemen list yang ingin di hapus.

Contoh:

data_siswa[-1]
## $`Nama Siswa`
## [1] "Andi"   "Bunga"  "Candra"
## 
## $Umur
## [1] 12 13 14
## 
## $`Jenis Kelamin`
## [1] "L" "P" "L"
data_siswa[-2]
## $`Nomor Induk`
## [1] "A001" "A002" "A003"
## 
## $Umur
## [1] 12 13 14
## 
## $`Jenis Kelamin`
## [1] "L" "P" "L"

Tanda Kurung Tunggal dan Ganda

Di dalam list, kita dapat mengakses elemen dengan tanda kurung tunggal ([...]) dan kurung ganda ([[...]]). Perbedaannya adalah sebagai berikut.

[…] [[…]]
Indeksasi tunggal Indeksasi rekursif
Akses list di dalam sebuah list Akses elemen di dalam list
Bisa untuk mengakses elemen tunggal Bisa juga untuk mengembalikan elemen tunggal dari list
Indeksasi dengan vektor Indeksasi dengan integer atau karakter

Mencari Jumlah Elemen List

Untuk mencari jumlah item yang dikandung oleh sebuah list, kita bisa menggunakan fungsi length().

Contoh:

length(data_siswa)
## [1] 4

Memeriksa Kandungan Item List

Untuk mencari apakah suatu item terkandung dalam list atau tidak, kita bisa menggunakan operator %in%.

Contoh:

"Andi" %in% data_siswa$"Nama Siswa"
## [1] TRUE
"Eko" %in% data_siswa$"Nama Siswa"
## [1] FALSE

Menambahkan Elemen Tunggal dari List

Misalkan disini kita ingin menambahkan nama siswa kelima yang bernama “Eko”. Tugas ini bisa kita lakukan dengan menggunakan fungsi append().

Contoh:

data_siswa[[2]] <- append(data_siswa[[2]], "Eko")

data_siswa
## $`Nomor Induk`
## [1] "A001" "A002" "A003"
## 
## $`Nama Siswa`
## [1] "Andi"   "Bunga"  "Candra" "Eko"   
## 
## $Umur
## [1] 12 13 14
## 
## $`Jenis Kelamin`
## [1] "L" "P" "L"

Perulangan di dalam List

Kita bisa melakukan perulangan di dalam list dengan menerapkan fungsi perulangan yang pernah kita pelajari sebelumnya.

for (i in 1:length(data_siswa)) {
  print(data_siswa[i])
}
## $`Nomor Induk`
## [1] "A001" "A002" "A003"
## 
## $`Nama Siswa`
## [1] "Andi"   "Bunga"  "Candra" "Eko"   
## 
## $Umur
## [1] 12 13 14
## 
## $`Jenis Kelamin`
## [1] "L" "P" "L"

6.5 Tugas (Project-Based Learning)

Apakah kamu masih ingat metode penyelesaian persamaan linear dengan matriks? Selesaikan persamaan linear di bawah ini dengan metode matriks!

  1. \(x+y=2\) dan \(x+6y=18\)

  2. \(2x+3y=6\) dan \(x-y=3\)

  3. \(x+y+z=-6\), \(x–2y+z=3\), dan \(-2x+y+z=9\)

  4. \(3x+4y−2z=5\), \(x−5y+2z=7\), dan \(2x+y-3z=9\)

  5. \(x+2y+z=6\), \(x+3y+2z=9\), dan \(2x+y+2z=12\)

Buatlah interpretasi terhadap setiap kode seolah-olah Anda menulis catatan pada R Notebook. Gunakan pemikiran sendiri untuk membuatnya. Presentasikan hasil Anda dan tugas .Rmd ini dikumpulkan pada Google Classroom dalam format .Rmd!

6.6 Rubrik Penilaian Pembelajaran

Nama Mahasiswa :
NIM :

Aspek 1 2 3 4
Aktivitas pemrograman
Kelancaran tugas
Kualitas pekerjaan
Keterbukaan masukan

Definisi

  • Aktivitas pemrograman mengukur keterlibatan mahasiswa dalam proses mengikuti pelajaran.
  • Kelancaran tugas mengukur sejauh mana mahasiswa mampu mengikuti prosedur pemrograman yang telah dicontohkan dalam buku ini.
  • Kualitas pekerjaan mengukur kemampuan mahasiswa dalam menggunakan komputernya untuk melakukan pemrograman dengan R.
  • Keterbukaan masukan mengukur sejauh mana kualitas presentasi mahasiswa dan menerima masukan dan tanggapan dari temannya yang lain.

6.7 Penutup

Dalam bab ini, kita telah mempelajari dua tipe data yang sangat penting dalam pemrograman R. Mereka adalah array dan vektor. Melalui penjelasan yang telah disajikan, kita dapat membuat, mengisi, memperbarui, menghapus, hingga melakukan operasi perulangan di dalam sebuah array dan list. Lakukan modifikasi terhadap berbagai tipe data dalam kasus penelitian pendidikan. Tentunya masih banyak hal yang bisa dieksplorasi melalui tipe data ini!