knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
Dalam modul ini Anda akan diajak untuk mengenal hal-hal dasar mengenai bahasa pemrograman R untuk digunakan dalam aktivitas data sains.
Bagaimana jika ada satu format dokumen yang dapat menggabungkan antara narasi, kode pemrograman, dan keluaran dari kode tersebut dalam satu wadah sekaligus? R Markdown adalah jawabannya! Melalui dokumen R Markdown Anda dapat menuliskan kode analisis data, mengeksekusi kode tersebut, dan memberikan teks interpretasi untuk analisis data tersebut. Jika Anda pernah mendengar atau menggunakan Jupyter Notebook, maka R Markdown adalah ekuivalen untuk format dokumen tersebut. Informasi lebih lanjut mengenai R Markdown dapat dilihat pada pranala ini.
Di dokumen R Markdown Anda dapat melakukan pengaturan teks dengan menggunakan Markdown. Silakan klik menu "Help -- Markdown Quick Reference" untuk melihat sontekan cara pengaturan teks menggunakan Markdown langsung dari RStudio. Buatlah penomoran (numbering) dan pengaturan untuk teks di bawah ini:
Seperti disebutkan sebelumnya bahwa Anda juga dapat menuliskan kode pemrograman di dokumen R Markdown. Namun untuk membedakan antara teks biasa dengan kode pemrograman diperlukan suatu blok yang disebut dengan chunk (di Jupyter Notebook disebut sebagai cell). Suatu chunk ditandai dengan adanya tiga backticks "`" pada awal dan akhir baris kode pemrograman seperti contoh berikut:
Kalimat ini dicetak tebal Kalimat ini dicetak miring Kalimat ini berisi links
Selanjutnya untuk menegaskan bahasa pemrograman apa yang digunakan dan akan dieksekusidalam suatu chunk, Anda dapat menambahkan penanda "{bahasa_pemrograman}" tepat setelah penanda backticks di awal chunk. R Markdown mendukung dan dapat mengeksekusi beberapa jenis bahasa pemrograman selain R, misalnya Python, Julia, C, Fortran, SQL, dan Shell script. Dalam contoh berikut menunjukan penggunaan bahasa pemrograman R di dalam suatu chunk:
head(mtcars) # melihat 6 baris pertama dari data mtcars, mtcars adalah data bawaan yang tersedia di R summary(mtcars) # melihat rigkasan statustik dari data data mtcars
filled.contour(volcano, color.palette = terrain.colors, plot.title = title("Topografi Gunung Maunga Whau"), key.title = title("Tinggi\n(meter)"))
Kombinasi "Ctrl + Alt + I" dapat Anda gunakan untuk membuah chunk dengan bahasa pemrograman R. Buatlah chunk baru berisi kode pemrograman R sebagai berikut!
filled.contour(volcano, color.palette = terrain.colors, plot.title = title("Topografi Gunung Maunga Whau"), key.title = title("Tinggi\n(meter)"))
Bagaimana cara menjalankan baris kode yang telah Anda tulis? Anda dapat melakukan evaluasi atau eksekusi baris kode yang terdapat di dalam chunk dengan cara menekan "Ctrl + Enter" atau "Ctrl + Shift + Enter". Dapatkan Anda menebak perbedaan antara dua kombinasi kibor tersebut?
R Markdown dapat disebut sebagai dokumen perantara untuk memproduksi dokumen final. Anda dapat dengan mudah memproduksi dokumen final dengan berbagai format dengan menggunakan R Markdown, misalnya dokumen teks biasa, salindia presentasi, laman web, dan bahkan aplikasi web interaktif. Beberapa ekstensi dokumen keluaran yang dapat dihasilkan diantaranya html, md, pdf, docx, odt, dan tex. Sebagai contoh pada modul-modul pelatihan ini kita akan memproduksi dokune final berupa "Github Flavoured Markdown" dengan ekstensi md.
Kemudian bagaimana cara mengatur dan memproduksi dokumen final tersebut? Caranya adalah dengan mengatur metadata pada dokumen R Markdown, khususnya pada baris output: ...
(perhatikan kode pada baris-baris awal dokumen R Markdown ini!). Apabila Anda ingin menghasilkan dokumen final berupa docx, maka cukup ubah kode output: github_document
menjadi output: word_document
. Terakhir, Anda dapat memproduksi dokumen final dengan cara klik tombol "Knit" atau kombinasi "Ctrl + Shift + K". Dokumen final yang dihasilkan akan berisi teks narasi, kode pemrograman, dan keluaran dari kode pemrograman tersebut. Silakan coba setelah Anda mengisi dan menjawab seluruh pertanyaan dalam modul pertama ini.
Jalankanlah kode dalam chunk berikut:
"Halo, nama saya adalah vynska" # isi dengan nama Anda
Saat Anda menjalankan chunk di atas, R akan mengevaluasi dan melakukan eksekusi pada baris kode yang dituliskan. Dalam contoh di atas, keluaran dari eksekusi baris kode adalah kalimat "Halo, nama saya adalah (nama Anda)" yang tercetak di dokumen R Markdown atau konsol RStudio. Mengapa kalimat "# isi dengan nama Anda" tidak ikut tercetak?
Sekarang jalankanlah baris kode berikut:
123
Hasil eksekusi kode di atas pada dasarnya adalah obyek berupa vector. Vector merupakan struktur data paling mendasar di bahasa pemrograman R. Terdapat tiga properti utama dari suatu vector, yaitu: type, length, dan attribute. Pada contoh kode sederhana di atas, obyek yang dihasilkan memiliki type berupa "double", length bernilai satu, dan attribute bernilai "NULL".
Struktur obyek dalam bahasa pemrograman R dapat dikategorikan berdasarkan dimensi dan homogenitas dari elemennya. Obyek dengan satu dimensi dan elemen yang homogen disebut sebagai atomic vector, sedangkan apabila elemennya heterogen maka disebut dengan list. Cara untuk membuat atomic vector adalah dengan elemen lebih dari satu adalah dengan menggunakan fungsi c()
, sedangkan untuk list dengan menggunakan fungsi list()
. Perhatikan contoh berikut:
c(1, 2, 3, 4) c("r", "academy", "telkom", "university") list(15, "r", "TRUE", 24L)
Saat Anda mengeksekusi chunk di atas, keluaran dari kode yang Anda eksekusi hanya tercetak pada layar. Anda dapat "menyimpan" keluaran dari kode menjadi sebuah obyek R dengan menggunakan tanda <-
dengan format "nama_obyek <- kode_yang_dieksekusi". Buatlah vector berupa huruf-huruf vokal dan simpanlah hasilnya dalam obyek R dengan nama huruf_vokal
! Isilah "___" dengan jawaban yang sesuai!
huruf_vokal <- c("a", "i", "u", "e", "o") # objek data tersimpan dengan nama 'huruf_vokal', namun tidak tercetak pada layar huruf_vokal # mencetak objek data dengan nama 'huruf_vokal' pada layar (Anda juga dapat menuliskannya sebagai "print(huruf_vokal)")
Properti type dari atomic vector dapat diketahui dengan menggunakan fungsi typeof()
. Pada chunk berikut ditunjukan empat type atomic vector yang paling sering dijumpai:
typeof("Semangat belajar!") typeof(77.6) typeof(16L) typeof(TRUE)
Dapatkah Anda mengetahui type dari huruf_vokal
yang telah Anda buat diatas?
typeof(huruf_vokal)
Apa yang terjadi jika Anda obyek menggunakan fungsi c()
namun setiap elemen dari obyek tersebut memiliki type yang berbeda? Dapatkah Anda memberikan penjelasan?
beragam <- c("Semangat belajar!", 77.6, 16L, TRUE) beragam typeof(beragam)
Struktur obyek dua dimensi merupakan yang paling banyak digunakan di R, yaitu matrix dan dataframe yang dapat dibuat dengan menggunakan fungsi matrix()
dan data.frame()
. Kedua data tersebut umumnya jarang dibuat secara langsung di R, notabene berasal dari berkas luar atau merupakan hasil dari penggunaan fungsi. Prinsipnya suatu dataframe merupakan gabungan dari beberapa data satu dimensi dengan jumlah yang sama, umumnya adalah atomic vectors. Menurut Anda, dapatkah suatu frame tersusun atas beberapa list dengan jumlah yang sama?
Anda dapat menggunakan simbol-simbol matematika pada umumnya untuk melakukan operasi matematika. Perhatikan contoh berikut:
5 + 6 580 - 13 75 * 65 983/56 54^3 27 %% 5 27 %/% 3
Sekarang cobalah lakukan operasi artimatika sama seperti pada chunk di atas untuk dua numeric vectors x dan y berikut. Apakah hasil yang Anda temukan? Apa yang terjadi jika length antar dua vector tersebut berbeda?
x <- c(34, 86, 98, 23, 66) y <- c(5, 6, 2, 8, 4) x + y x - y x * y x / y x^y x %% y x %/% y
Fungsi memiliki tugas utama untuk mengolah suatu input menjadi output. Anda dapat melihat dan membaca dokumentasi dari suatu fungsi dengan menjalankan ?nama_fungsi
atau help(nama_fungsi)
. Di bawah ini merupakan beberapa fungsi dasar yang dapat Anda gunakan untuk mengolah obyek bernama iris
sebagai input. Buatlah catatan singkat mengenai kegunaan dari setiap fungsi yang digunakan!
iris # mencetak data pada layar ?iris # dokumentasi dataset dim(iris) # dimensi data iris str(iris) # struktur data colnames(iris) # nama kolom head(iris) # melihat 6 baris pertama head(iris, 10) # melihat n baris pertama (10) tail(iris) # melihat 6 baris terakhir tail(iris, 10) # melihat n baris terakhir (10) summary(iris) # ___ iris[1, ] # ambil satu baris pertama dari semua kolom iris[c(1, 6, 12),] # ambil baris 1,6,2 dari semua kolom iris[ ,2] # satu kolom kedua dari semua baris, format vector iris[ ,2, drop = FALSE] # satu kolom kedua dari semua baris, format iris[2,2] # ___ iris$Sepal.Length # ___ class(iris$Species) # ___ length(iris$Petal.Width) # m___ levels(iris$Species) # ___ length(levels(iris$Species)) # ___ unique(iris$Species) # ___ length(unique(iris$Species)) # ___ mean(iris$Sepal.Length) # ___ sd(iris$Sepal.Length) # ___ median(iris$Sepal.Width) # ___ sum(iris$Petal.Length) # ___ plot(iris) # ___ cor(iris[, -5]) # ___ write.csv(iris, file = "iris.csv", row.names = FALSE) # ___
Dari catatan ringkas mengenai fungsi-fungsi di atas, dapatkah Anda menebak mana fungsi yang berjenis 'changing the environment' dan mana yang berjenis 'calculating value'?
Meskipun R telah memiliki banyak fungsi bawaan dan sangat bermanfaat, tidak jarang Anda memerlukan fungsionalitas lain yang tidak tersedia di R. Di bahasa pemrograman R terdapat sistem ekstensi yang disebut sebagai paket. Anda dapat melakukan banyak hal dan berbagai tujuan dengan cara memasang paket yang sesuai. Terdapat berbagai sumber repositori tempat paket-paket tersebut tersimpan secara daring, diantaranya adalah CRAN (Comprehensive R Archive Network), GitHub, dan Bioconductor.
Anda dapat memasang paket yang berasal dari CRAN dengan menggunakan fungsi install.packages("nama_paket")
. Pada RStudio Anda juga dapat melakukan hal tersebut melalui menu "Tools-Install Packages". Sekarang cobalah pasang paket "tidyverse", "tidymodels", dan "tidytext"! (Catatan: jika Anda menuliskan fungsi untuk memasang paket di dalam chunk R Markdown maka jangan lupa tambahkan argumen eval = FALSE
di awal chunk)
install.packages("tidyverse") install.packages("tidymodels") install.packages("tidytext")
Sedangkan untuk paket yang berasal dari GitHub dan Bioconductor dapat dipasang menggunakan fungsi remotes::install_github("user/repo")
serta remotes::install_bioc("repo")
. (Catatan: Anda harus memasang paket remotes
terlebih dahulu)
Selamat Anda telah menyelesaikan modul 1! Silakan jalankan "Ctrl + Shift + K" atau klik tombol "Knit" untuk membuat dokumen final.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.