Bab 2 Tipe dan Struktur Data

2.1 Tujuan Pembelajaran
CPMK 2
Mahasiswa mampu memahami tipe dan struktur data dalam pemrograman dasar dan menerapkannya dalam bahasa R.
Sub-CPMK 2
Mahasiswa mampu memahami sintaks dasar pada R Console, tipe data, nomenklatur variabel, dan konvensi penamaan variabel.
Deskripsi Isi Bahan Ajar
Bab 2 ini membahas tentang:
- Bahasa Alami dan Komputer
- Sintaks Dasar R
- Tipe Data
- Nomenklatur Variabel
- Konvensi Penamaan Variabel
Waktu Pembelajaran
Alokasi Waktu = 3 x 50 menit (3 SKS)
| Kegiatan | Alokasi Waktu |
|---|---|
| Ceramah dan Diskusi Interaktif | 50 menit |
| Praktik Sintaks Dasar pada R | 50 menit |
| Konsultasi Praktik R | 50 menit |
| Presentasi individu | 50 menit |
Petunjuk Penggunaan Bahan Ajar
Langkah-langkah pembelajaran.
Pelajari sintaks dasar, tipe data, nomenklatur variabel, dan konvensi penamaaan pada R. Terapkan pengetahuan Anda pada contoh-contoh kasus yang telah disajikan secara individu kolaboratif. Konsultasikanlah kesulitan Anda selama praktik pada pengajar mata kuliah ini.Sumber Belajar yang Dibutuhkan.
Laptop (Notebook), jaringan internet, aplikasi RStudio
Tujuan Akhir (Performance Objective)
Setelah menyelesaikan modul ini, mahasiswa mampu memahami sintaks dasar pada R Console, tipe data, nomenklatur variabel, dan konvensi penamaan variabel.
2.2 Bahasa Alami dan Komputer
Bahasa komputer memiliki aturan yang ketat sehingga bahasa mesin sering kali tidak menerima kesalahan apapun (De Micheaux & Liquet, 2014). Hal ini membuat bahasa komputer sangat jujur dalam berkomunikasi sehingga sering dimanfaatkan untuk membuat otomasi pekerjaan yang bersifat rutin karena komputer tidak mentolerir kesalahan dengan teliti. Meskipun demikian, bahasa komputer menyimpan kosa kata yang lebih sedikit daripada bahasa alami.
Kita bisa menganalogikan nilai konstanta dan variabel (nilai yang tersimpan dalam sebuah nama) sebagai kata benda dan operator dan fungsi sebagai kata kerja (Aphalo, 2024). Sintaks adalah pernyataan yang mewakili bahasa alami. Contohnya kita memiliki pernyataan a+1 memiliki tiga komponen a sebagai variabel, + sebagai operator, dan 1 sebagai konstanta. Contoh berikutnya misalnya sqrt(4) memiliki dua komponen yaitu sqrt() sebagai sebuah fungsi, dan 4 sebagai nilai numerik (konstanta). Ungkapan sqrt(4) diartikan dalam bahasa alami bermakna “hitunglah akar dari angka 4” atau \(\sqrt{4}\) dimana sqrt() adalah fungsinya dan 4 adalah argumennya.
Beberapa hal penting yang harus dipahami dalam mempelajari dalam bahasa komputer adalah tingkat ketelitiannya. Bahasa R termasuk bahasa yang bersifat case sensitive artinya sangat teliti terhadap huruf kapital dan huruf kecil selama penulisannya. Penulisan nama variabel juga tidak boleh menggunakan spasi ” “. Jika menginginkan membuat nama maka disarankan menggunakan penghubung.
Meskipun hanya berbeda satu huruf yang besar komputer membacanya sebagai bahasa yang berbeda.
Contoh:
## [1] FALSE
## [1] TRUE
TRUE dan FALSE disini adalah aljabar boolean. TRUE berarti angka 1 dan FALSE berarti angka 0 dalam sistem biner.
Contoh nama variabel yang berasal dari dua komponen. Jika ditulis tanpa sambungan maka pemrosesan bahasa R akan error.
Contoh:
## [1] 10
2.3 Sintaks Dasar Pemrograman R
R adalah bahasa pemrograman yang cukup populer dalam komputasi statistik dan analisis data khususnya dalam bidang penelitian akademik. Bahasa R telah didukung oleh lebih dari 20000 packages yang tersimpan rapi di dalam repositori CRAN (https://cran.r-project.org/web/packages/). Seperti bahasa pemrograman yang lain, R memiliki bahasa sintaks yang spesifik. Kita harus memahami “grammar” ini untuk menyelam lebih jauh di dalam bahasa R. Kita bisa mengetahui versi R yang terinstall dengan mengetikkan R pada Tab Terminal yang terletak di sebelah R Console di R Studio.
Seperti bahasa program yang lain, sintaks R terdiri dari tiga komponen yaitu variabel, comments, dan keywords. Variabel berfungsi untuk menyimpan data. Data bisa berupa nilai numerik, karakter, atau susunan dari nilai numerik dan karakter. Comments digunakan untuk memberikan penjelasan dan bagian ini sebenarnya tidak dijalankan oleh R. Keywords merupakan kata yang dipertahankan memiliki makna spesifik oleh compiler.
Tidak semua hasil perhitungan (komputasi) harus kita print() kerena sering kali kita tidak membutuhkan itu. Oleh karena itu, nilai tersebut kita simpan dalam sebuah variabel. Seperti bahasa pemrograman yang lain, variabel ini akan disimpan oleh memori yang menyimpan data kita. Dalam R, pendefinisian variabel bisa menggunakan beberapa cara berikut.
- Penugasan dengan tanda
= - Penugasan dengan tanda
<- - Penugasan dengan tanda
->
Untuk penugasan dengan <- kita memiliki shortcut Alt + - pada keyboard.
Contoh:
Variabel merupakan wadah penyimpan data kita selama bekerja dengan R. Untuk menyimpan data kita menugaskan sebuah variabel dengan nama tertentu dengan tanda <- (sejujurnya ini merupakan ciri khas R). Berdasarkan pengamatan saya programmer R seringkali lebih menyukai penugasan variabel dengan tanda ini (<-).
Programmer seringkali membuat komentar terhadap kode yang sedang ditulisnya. Hal ini dilakukan agar kode R yang telah ditulis dapat dipahami oleh orang yang membacanya dan mendukung reproducibilitas. Jika kita bekerja menggunakan R Script, menulis comment dilakukan dengan tanda pagar #. Tanda ini sepertinya umum dalam bahasa pemrograman yang lain. Jika kita bekerja dengan R Notebook atau R Markdown kita tidak perlu menggunakan tanda pagar # karena kita bisa membuat catatan deskripsi pada wilayah non-chunk yang sama-sama tidak dijalankan oleh R.
Contoh:
## [1] 9
Jika pekerjaan kita sudah mengandung banyak baris kode R, maka biasanya komentar berfungsi untuk “mematikan” sementara sehingga bagian kode tertentu tidak dijalankan. Hal ini juga dilakukan untuk mendiagnosis kesalahan (debugging) yang terjadi selama proses bekerja. Caranya adalah dengan memblok (memilih) bagian kode yang ingin dimatikan sementara kemudian Ctrl + Shift + C pada keyboard. Untuk menonaktifkannya kita tinggal mengulang menekan Ctrl + Shift + C.
Contoh:
Fungsi IF
Keywords adalah nama-nama fungsi yang secara default telah didefinisikan oleh base R. Contohnya adalah pernyataan if. Fungsi if berfungsi untuk melakukan aljabar Boolean (seperti logika matematika implikasi). Atau sebenarnya fungsinya seperti “IF” pada Microsoft Excel. Pernyataan ini berfungsi untuk mengambil keputusan ketika suatu kondisi terpenuhi oleh input data yang kita masukkan.
Contoh:
## [1] "Umurnya kurang dari 18 "
a <- 25
b <- 20
# Set the if-else statement
if (a > b){ print('A lebih besar dari B')
} else { print('B lebih besar dari A') }## [1] "A lebih besar dari B"
Fungsi REPEAT
Fungsi repeat digunakan untuk mengulangi blok kode secara berulang-ulang. Jika tidak diberhentikan, fungsi repeat tidak akan berhenti sehingga kita butuh fungsi break untuk memutus perulangan tersebut ketika komputasi telah mencapai kriteria tertentu. Dalam contoh di bawah ini, kita melakukan perulangan untuk menghitung nilai 1 sampai 6, berarti ketika perhitungan sudah sampai angka 6 maka komputasi R akan berhenti. Nilai output yang ditampilkan hanya sampai 5. Mengapa?
Contoh:
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
Fungsi WHILE
Fungsi while berarti ketika “sementara” masih memenuhi kondisi syarat maka proses komputasi akan tetap berjalan sampai kondisi terbaca habis (sudah tidak terpenuhi).
Contoh:
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
Fungsi FOR
Fungsi for juga mirip seperti fungsi while yaitu untuk melakukan perulangan (loop). Materi ini akan lebih lanjut kita perdalam dalam Bab 4. Perbedaannya dengan while adalah kita telah mendefinisikan rentang perulangan yang akan dilakukan. Dalam contoh ini perulangan dilakukan selama 10 kali dari i = 1 sampai i = 10.
Contoh:
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
## [1] 11
## [1] 12
Objek TRUE dan FALSE
Objek TRUE/ FALSE untuk mengekspresikan aljabar Boolean untuk nilai 1 dan 0 secara berturut-turut. Jika suatu pernyataan sama dengan kondisi yang dipersyaratkan maka bernilai 1 (benar), sebaliknya bernilai salah (0).
Contoh:
# A simple R program
# Mencari nilai TRUE/ FALSE
x <- 14
y <- 15
# Perbandingan nilai x dan y
z = x > y
p = x < y
print(z)## [1] FALSE
Bagaimana output dari variabel p? Dapatkah Anda tunjukkan output hasilnya pada pengajarmu?
Objek NULL
Objek NULL merepresentasikan nilai “nol” dalam R. Nilai ini untuk mewakili list yang tidak berisi nilai dan biasanya digunakan untuk mengembalikan ungkapan dan fungsi yang nilainya tidak terdefinisikan. Untuk mendefinisikan nilai NULL, tugaskan pada sebuah variabel dan isilah variabel tersebut dengan nilai NULL.
Contoh:
## NULL
## [1] "NULL"
Dalam R, NULL (huruf kapital) merupakan kata yang dipertahankan dan juga dapat menjadi hasil dari masukan data dengan tipe data yang tidak dikenali. R memberikan dua fungsi untuk berurusan dengan NULL.
is.null()berfungsi untuk menmvalidasi adanya nilaiNULL.as.null()berfungsi untuk mengubah data tertentu menjadi nilaiNULL.
Objek NA
Ini merupakan konstanta logika dengan panjang 1 dan mengandung indikator nilai hilang. NA (Not Available) merupakan kata yang dipertahankan dan dapat diubah menjadi tipe data vektor lainnya (kecuali raw) dan dapat menjadi hasil ketika kita mengimpor data. NA dan “NA” (sebagai string) tidak dapat digantikan.
Objek NaN
Objek NaN merupakan singkatan dari Not a Number. Ini merupakan vektor logika dengan panjang 1 dan berfungsi sebagai nilai numerik real dan imajiner dari sebuah nilai, tetapi bukan nilai vektor integer (bilangan bulat). NaN juga merupakan kata kunci yang dipertahankan dalam R.
Objek Inf
Objek Inf merupakan singkatan dari infinity atau tak terhingga yang berarti tersimpan nilai besar atau hasil pembagian dengan nol. Inf merupakan kata yang dipertahankan dan dalam banyak kasus—sebagai produk dari kalkulasi R dan oleh karena itu sangat jarang diperoleh dari produk impor data. Nilai tak terhingga berarti bahwa nilai tersebut tidak hilang dan merupakan bilangan yang sangat besar.
Contoh:
# Here we perform code of NULL, NA, Inf, NaN.
#populating variables
a <- "NA"
b <- "NULL"
c <- NULL
d <- NA
e <- NaN
f <- Inf
### Check if variables are same?
identical(a,d)## [1] FALSE
## [1] FALSE
## [1] 0
## [1] 1
## [1] 1
## [1] 1
Contoh
## NULL
## [1] "NULL"
## logi NA
## [1] "logical"
## num NaN
## [1] "numeric"
## num Inf
## [1] "numeric"
2.4 Jenis Data dalam R
Secara umum, ketika kita sedang memprogram pada salah satu bahasa pemrograman, kita harus menggunakan variabel yang berbeda untuk menyimpan informasi yang berbeda. Variabel adalah disimpan pada memori yang dipertahankan untuk menyimpan nilai-nilai. Hal ini berarti bahwa ketika kita membuat variabel, kita mempersiapkan ruang penyimpanan dalam memori.
Anda mungkin ingin menyimpan informasi dari berbagai jenis tipe data seperti karakter, karakter panjang, integer (bilangan bulat), floating (nilai desimal), Boolean (nilai logika biner), dan seterusnya. Berdasarkan tipe data dari variabel, sistem operasi akan mengalokasikan memori dan kemudian menentukan apa yang bisa disimpan dalam memori yang dipertahankan.
Tidak seperti bahasa lain layaknya C dan Java, variabel dalam R tidak perlu dideklarasikan sebagai tipe data tertentu. Objek R yang ditugaskan pada suatu variabel, maka tipe data dari objek R tersebut menjadi tipe data dari variabel. Terdapat beberapa tipe data di dalam objek R. Hal ini dikenal juga sebagai struktur data. Beberapa tipe data yang paling sering digunakan antara lain:
- Vektor
- List
- Matriks
- Array
- Faktor
- Dataframe
- Table
Semua ini akan dibahas pada Bab 6 dan 7 selanjutnya.
Semua hal yang ada di dalam R adalah sebuah “objek”. R memiliki lima kelas atomik dasar antara lain:
- logical (contohnya
TRUE,FALSE) - integer (contohnya
2L, as.integer(3)) - numeric (real atau desimal) (contohnya 2, 2.0, pi)
- complex (contohnya 1+0i, 1+4i)
- character (contohnya “pendidikan”, “fisika”)
Yang paling sederhana dari objek R adalah objek vektor. Terdapat enam tipe data dari vektor atomik ini, yang disebut juga dengan kelas enam vektor. Objek R yang lain dibangun pada vektor atomik.
Sebuah variabel dapat menyimpan berbagai macam tipe data seperti nilai, karakter, dan sebagainya. Tipe data berbeda ini yang dapat kita gunakan untuk kode apapun disebut sebagai tipe data. Nama dari variabel yang diketahui adalah nama variabel. Suatu variabel biasanya hanya menyimpan satu tipe data tertentu.
Contoh: Disini, 123 adalah data integer (bilangan bulat). Tipe data dari x adalah integer.
## [1] "numeric"
Disini objek x adalah sebuah variabel dari tipe data integer. Sekarang, marilah kita mendiskusikan tipe data di bawah ini:
R mendukung tiga cara penugasan variabel, antara lain:
- Ketika menggunakan operator sama dengan (
=), data disalin dari kanan ke kiri - Ketika mengginakan (
<-), data disalin dari kanan ke kiri - Ketika menggunakan (
->), data disalin dari kiri ke kanan
Contoh:
## [1] "Contoh ="
## [1] "Contoh <-"
## [1] "Contoh ->"
Berdasarkan pengalaman saya, sebagian besar programmer R lebih menyukai penugasan variabel dengan metode ->.
Tipe Data Logical
Tipe data logical dikenal sebagai tipe data Boolean. Nilainya berupa TRUE atau FALSE.
Contoh:
## [1] "logical"
## [1] "logical"
Pada kode di atas, objek bool1 bernilai TRUE dan bool2 bernilai FALSE. Fungsi class dalam R digunakan untuk menampilkan atribut kelas (tipe data) dari objek R.
Tipe Data Numeric
Dalam R, tipe data numeric mewakili semua bilangan dengan atau tanpa nilai desimal.
Contoh:
## [1] "numeric"
## [1] "double"
Tipe Data Integer
Tipe data integer menjelaskan nilai tanpa nilai desimal. Kita menggunakan akhiran “L” untuk membuat data integer.
Contoh:
## [1] "integer"
## [1] "integer"
R mendukung tipe data integer yang merupakan himpunan dari bilangan bulat. Kita dapat mengubah sebuah nilai menjadi tipe data integer dengan menggunakan fungsi as.integer. Kita juga bisa menggunakan akhiran “L” untuk menunjukkan nilai integer secara spesifik.
Contoh:
## [1] "integer"
## [1] "integer"
## [1] "integer"
## [1] "integer"
Tipe Data Complex
Tipe data complex digunakan untuk mendefinisikan nilai imajiner dalam R. Kita menggunakan akhiran “i” untuk membuat komponen imajiner. R mendukung tipe data complex, yang merupakan himpunan dari semua bilangan kompleks. Tipe data complex menyimpan bilangan real dan komponen imajiner.
Contoh:
## [1] "complex"
## [1] "complex"
Tipe Data Character
Tipe data character dibuat untuk menyimpan nilai string. Tipe data ini tidak bisa diolah secara matematik (numerik). Contohnya seperti ‘A’ adalah karakter tunggal dan “R Programming” adalah sebuah string. Kita bisa menggunakan kutipan tunggal ’ ’ atau kutipan ganda ” ” untuk membuat string. Secara umum, kita bisa menggunakan:
- ’’ untuk variabel karakter
- “” untuk variabel string
Contoh:
## [1] "character"
## [1] "character"
Mencari Tipe Data dari Sebuah Objek
Untuk mencari tipe data dari sebuah objek, kita bisa menggunakan fungsi class seperti yang sidah banyak dicontohkan sebelumnya.
Contoh:
## [1] "logical"
## [1] "integer"
## [1] "numeric"
## [1] "complex"
## [1] "character"
Verifikasi Tipe Data
Untuk memverifikasi tipe data tertentu secara spesific kita bisa menggunakan fungsi dimana awalnya adalah “is”. Sintaksnya untuk fungsi ini dengan pola is.data_type() dari objek yang sedang diidentifikasi.
Contoh:
## [1] TRUE
## [1] TRUE
## [1] TRUE
## [1] TRUE
## [1] TRUE
## [1] FALSE
## [1] FALSE
Konversi Tipe Data Objek R
Suatu saat kita kadang-kadang membutuhkan suatu tipe data tertentu untuk melakukan pengolahan data penelitian. Ketika sumber data kita tidak memenuhi tipe data tersebut maka kita perlu melakukan konversi data sesuai dengan tipe yang diinginkan. Di dalam R, kita bisa menggunakan fungsi dengan awalan “as” dalam pola sintaks seperti as.data_type() dari objek yang ingin diubah tipe datanya.
Contoh:
## [1] 1
## [1] 3+0i
## [1] TRUE
## [1] "1+2i"
## Warning: NAs introduced by coercion
## [1] NA
2.5 Nomenklatur Variabel R
Beberapa aturan di bawah ini harus diperhatikan dalam mendefinisikan nama variabel dalam R.
- Nama variabel yang valid harus mengandung alfabet, bilangan, period (.), dan underscore (_). Contoh: “var.1” atau “var_1”
- Selain titik dan garis bawah, tanda lain seperti ‘^’, ‘!’, ‘@’, ‘#’, ‘$’, ‘+’, ‘-’, ‘/’, atau ’*’ tidak diperbolehkan. Contoh: “var1” atau “var#1” tidak mungkin.
- Sebuah variabel tidak boleh dimulai dengan bilangan atau garis bawah. Contoh: “22var” atau “_var” tidak mungkin.
- Jika sebuah variabel dimulai dengan titik (.) kemudian selanjutnya tidak boleh dimulai dengan angka. Contoh: “.3var” tidak mungkin.
- R akan menimpa isi informasi yang tersimpan dalam suatu objek jika nama objek berikutnya memiliki nama yang sama.
Contoh:
## [1] 100
## [1] 200
Setiap kita membuat objek data dalam R, semua objek ini akan terlihat pada Tab Environment yang terletak di sebelah kanan atas dari lembar kerja RStudio. Ketika jumlah objek yang dibuat sudah terlalu banyak, fitur ini akan sangat bermanfaat untuk memeriksa kembali nama objek yang telah dibuat dan isi data yang disimpan dalam nama objek tersebut.

2.6 Tugas (Project-Based Learning)
Kerjakanlah tugas berikut secara individu dan presentasikan hasilnya di akhir pembelajaran!
Jelaskanlah mengapa begitu penting dalam memahami struktur dan tipe data dalam suatu proyek pemrograman? Bagaimana pengaruh ketika suatu tipe data tidak sesuai dengan tujuan pemrograman yang sedang dilaksanakan?
Berdasarkan uraian tipe data objek R yang telah dijelaskan, buatlah masing-masing satu contoh objek yang mewakili setiap tipe data! Buatlah sebuah file R Notebook (.Rmd) untuk mengaplikasikan contoh-contoh yang telah didemonstrasikan pada Bab 2 ini. Gunakan nama variabel, operator, dan angka yang berbeda sesuai dengan kreativitas Anda!
2.7 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.
2.8 Penutup
Mempelajari bahasa komputer tidak sama dengan bahasa alami yang kita gunakan sehari-hari. Bahasa komputer bersifat spesifik dan tidak menerima kesalahan sehingga komputasi komputer bisa teruji konsistensinya untuk pekerjaan yang bersifat struktural dan sistematis. Bahasa R merupakan salah satu bahasa pemrograman yang banyak digunakan dalam analisis data statistik. Sintaks dasar R telah kita pelajari dalam bab ini. Beberapa tipe objek sudah diperkenalkan juga meskipun masih dalam tahap dasar. Materi pada bab ini akan diperdalam kembali pada bab-bab berikutnya secara lebih mendalam. Semakin mengikuti materi pada setiap bab dari buku ini, Anda akan merasa bahwa pengetahuan kita akan semakin berkembang dan bertumbuh. Kunci dari penguasaan suatu bahasa pemrograman adalah telaten dan rajin berlatih.