Bab 8 Debugging

8.1 Tujuan Pembelajaran
CPMK 8
Mahasiswa mampu menganalisis kesalahan (debugging) selama mengerjakan koding dalam bahasa R.
Sub-CPMK 8
Mahasiswa mampu mengevaluasi kode error yang muncul ketika mengerjakan sintaks di dalam R (debugging).
Deskripsi Isi Bahan Ajar
Bab 8 ini membahas tentang:
- Mengenali Kesalahan Pemrograman.
- Fungsi Error Handling.
- Manipulasi Kondisi di R.
- Memproses Kondisi di R.
- Menganalisis Masalah (Debugging) di R.
- Mengelola File Eksternal di R.
Waktu Pembelajaran
Alokasi Waktu = 3 x 50 menit (3 SKS)
| Kegiatan | Alokasi Waktu |
|---|---|
| Ceramah dan Diskusi Interaktif | 50 menit |
| Praktik Debugging pada R | 50 menit |
| Konsultasi Praktik R | 50 menit |
| Presentasi individu | 50 menit |
Petunjuk Penggunaan Bahan Ajar
Langkah-langkah pembelajaran.
Pelajari alat dan fungsi untuk mengenali kesalahan (error), manipulasi dan memproses kondisi, mengatasi masalah pemrograman (debugging), serta mengelola file eksternal di 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.Sumber Belajar yang Dibutuhkan.
Laptop (Notebook), jaringan internet
Tujuan Akhir (Performance Objective)
Setelah menyelesaikan modul ini, mahasiswa mampu mengevaluasi kode error yang muncul ketika mengerjakan sintaks di dalam R (debugging).
8.2 Mengenali Kesalahan Pemrograman.
Dalam bab ini, kita akan mempelajari beberapa alat dan fungsi R untuk menganalisis kesalahan yang mungkin terjadi ketika bekerja dengan bahasa pemrograman. Jika kamu pernah mempelajari bahasa pemrograman lain selain R, kamu tentu pernah menggunakan beberapa fungsi seperti “try”, “catch”, dan akhirnya menemukan kesalahan yang ditemukan selama proses pengembangan kode. Bahasa R juga memiliki fasilitas itu. Mari kita mempelajarinya pada bab ini.
Error (kesalahan) dapat terjadi ketika kode yang ditulis tidak sesuai dengan tujuan pemrograman yang ingin dicapai. Sebagai contoh, kita sedang membuat dua string dan kemudian menjumlahkannya. Error akan terjadi dengan alasan karena kedua string bukan bertipe data numerik seperti yang ditampilkan di bawah ini.
Contoh:

Operator penjumlahan “+” adalah sebuah fungsi yang membutuhkan tipe data numerik sebagai argumen bilangan yang sedang dijumlahkan. Pada contoh di atas, kita memproses data “character” yang tidak didukung oleh operator penjumlahan “+”. Oleh akrena itu, kode ini akan selalu dibaca salah oleh R Interpreter. Kode error akan menghentikan eksekusi program, dan R akan mencetak pesan error pada R console yaitu “Error in ”Angka lima” + ”Angka delapan”: non-numeric argument to binary operator”.
Di dalam R, terdapat dua bentuk yang bisa berhubungan kesalahan yaitu “warning” dan “message”.
Warning
Warning adalah peringatan atau semacam pengingat dimana kita mungkin akan mengalami kesalahan jika kode tetap dieksekusi. Berikut ini adalah contoh dari “warning” dan kode masih bisa dijalankan.
Contoh:
## Warning: NAs introduced by coercion
## [1] 1 2 NA
Fungsi dari as.numeric() bertugas untuk mengubah vektor string `c(“1”, “2”, “tiga”) menjadi “numeric”. Akan tetapi, string “tiga” tidak mungkin diubah menjadi numeric, sehingga peringatan muncul. Eksekusi kode tidak diberhentikan, angka 1 dan 2 menjadi numerik tetapi “tiga” menjadi “NA” atau “Not Applicable”.
Message
Message adalah pesan yang dicetak di dalam R Console. Fungsinya seperti mekanisme error dan warning. Berikut ini adalah contoh bagaimana kita membuat message dalam sebuah fungsi yang kita definisikan.
Contoh:
## Ini adalah message yang kita buat.
8.3 Fungsi Error Handling
Menangani kesalah (error handling) adalah proses yang kita pilih untuk mengetahui kesalahan pemrograman yang berhenti sementara. Terdapat dua cara yang sering digunakan dalam R untuk menangani error yaitu dengan fungsi stop() atau warning() atau kita bisa menggunakan opsi seperti “warn” atau “warning expression”. Fungsi dasar yang dapat digunakan untuk menangani kesalahan di kode kamu.
stop(...): berfungsi untuk menghentikan evaluasi program saat ini dan menampilkan argumen message. Fungsi ini mengendalikan return pada level atas.waiting(...): evaluasinya bergantung pada nilai dari opsi error yang diingatkan. Jika nilainya negative (-), kemudian diabaikan, jika nilainya adalah nol (0), mereka tersimpan dan dicetak setelah fungsi top level menyelesaikan eksekusinya.tryCatch(...): membantu kita dalam mengkalkulasi kode dan menugaskan pengecualian.
Berikut ini adalah beberapa kode error yang biasanya muncul di dalam bahasa pemrograman R.
| Kode error | Makna |
|---|---|
| Error message: object X not found | Objek belum pernah didefinisikan. |
| Error in barplot.default(X): the ‘height’ must be a vector or a matrix | Argumen tidak sesuai dengan tipe data yang dipersyaratkan di dalam fungsi. |
| Error in colMeans(x, na.rm = TRUE): the ‘x’ must be numeric | Argumen tidak sesuai dengan tipe data yang dipersyaratkan di dalam fungsi. |
| Error in file(file, “rt”): they cannot open the connection | Direktori file yang sedang diimport tidak bisa diakses karena salah. |
| Error in library(“Y”): there is no package called ‘Y’ | Package belum pernah diinstall di dalam komputer. |
| Error in names(X): ‘names’ attribute must be of the same length as the vector | Proses perhitungan tidak bisa dilakukan karena dimensi data tidak cocok. |
| Error in X variable: could not find function X | Fungsi belum pernah didefinisikan. |
Tentunya beberapa contoh di atas hanyalah sebagian kecil dari contoh error yang mungkin terjadi dalam pemrograman kita. Menangani kesalah diperlukan pengetahuan evaluasi kode yang cukup komprehensif. Sekarang kita memiliki teknologi chatbots atau Generative AI (GenAI) seperti (ChatGPT, Claude, Gemini, Grok, Copilot). Kamu bisa menggunakannya dalam menangani kesalahan yang sedang terjadi. Meskipun demikian, solusi yang diterapkan berada di tangan programmer yang mengetahui konteks kesalahan program yang sedang dikerjakan.
8.4 Menganalisis Masalah (Debugging) di R
Dalam bahasa pemrograman, misalnya R, error sering juga disebut sebagai “bug”. Langkah programmer dalam menganalisis kesalahan dan memperbaiki kode yang benar adalah “debugging”. Kita bisa mempelajari masalah yang terjadi dengan pemberitahuan error, warning, atau message seperti yang telah dijelaskan sebelumnya. Cara lain juga bisa difasilitasi oleh R seperti menggunakan fungsi try(), tryCatch(), danwithCallingHandler(). Tidak seperti bahasa pemrograman lain seperti Java, C++, dan lainnya, fungsitryCatch()` dibuat sebagai fungsi di dalam R.
try()
Kita perlu membungkus kode R yang tidak diinginkan (error) dalam blok kode fungsi try(). Perintah yang diperiksa layaknya seperti argumen dalam fungsi. Jika Anda memiliki lebih dari satu pernyataan, akan lebih mudah untuk menulis fungsi yang berisi semua pernyataan tersebut dan memanggil fungsi tersebut di dalam blok try().
Fungsi try() membantu kita untuk melanjutkan eksekusi program meskipun terdapat sebuah error dalam prosesnya. Terdapat beberapa argumen dari fungsi try() yang wajib kita perhatikan antara lain:
Syntax:
try(expr, silent, outFile)
expr= kode R yang ingin dianalisis error-nyasilent= jika TRUE maka error akan dilewatioutFile= Koneksi atau string karakter yang menyebutkan nama file yang akan dicetak (melaluicat(*, file = outFile)); hanya digunakan jikasilentdiatur ke FALSE secara default.
Contoh:
## [1] 5
## [1] 2.5
## [1] 1.25
## Error in h(simpleError(msg, call)) :
## error in evaluating the argument 'x' in selecting a method for function 'print': non-numeric argument to binary operator
## [1] 0.5
## [1] Inf
## [1] 1
Dengan menggunakan fungsi try(), kita dapat melihat bahwa kode tersebut berjalan di semua kasus lain, bahkan setelah terjadi kesalahan di salah satu iterasi.
tryCatch()
Fungsi try-catch() di R mengevaluasi ekspresi penangkap pengecualian. Kelas dari pengecualian yang dilemparkan oleh panggilan stop() standar adalah trial and error. Fungsi try-catch() memungkinkan pengguna untuk menangani kesalahan dengan melakukan hal-hal seperti: “if(error), then(this)”. Dalam tryCatch(), ada dua “kondisi” yang dapat ditangani, seperti ‘warnings’ dan ‘error’. Saat menulis setiap blok kode, ada baiknya untuk memahami status eksekusi dan cakupannya.
Berikut ini adalah sintaks dasar dari tryCatch().
Syntax:
check_error = tryCatch({
# expression
}, warning = function(w){
# code that handles the warnings
}, error = function(e){
# code that handles the errors
}, finally = function(f){
# clean-up code
})
Suatu kesalahan menerima fungsi atau instruksi sebagai masukan, dan kita dapat mengambil tindakan korektif apa pun yang perlu diambil jika terjadi kesalahan dalam fungsi tersebut. Deskripsi dari argumen-argumen dari fungsi tryCatch() adalah sebagai berikut.
expression: kode R yang ingin dievaluasi.
… : Ini adalah daftar ekspresi bernama. Ekspresi dengan nama yang sama dengan kelas pengecualian yang dilemparkan saat ekspresi dievaluasi.
finally: Ini adalah ekspresi yang dijamin akan dipanggil bahkan jika ekspresi tersebut melempar pengecualian.
envir: Lingkungan tempat ekspresi yang ditangkap akan dievaluasi.
Contoh:
tryCatch(
# Specifying expression
expr = {
1 + 1
print("Everything was fine.")
},
# Specifying error message
error = function(e){
print("There was an error message.")
},
warning = function(w){
print("There was a warning message.")
},
finally={
print("Finally Executed")
}
)## [1] "Everything was fine."
## [1] "Finally Executed"
v<-list(1,2,4,'9',10, 0, 5)
for (i in v) {
tryCatch(print(5/i),error=function(e){
print("Non conformabale arguments")
})
}## [1] 5
## [1] 2.5
## [1] 1.25
## [1] "Non conformabale arguments"
## [1] 0.5
## [1] Inf
## [1] 1
# Using tryCatch()
get_condition <- function(input_code)
{
tryCatch(input_code,
error = function(c) "Unexpected error occurred",
warning = function(c) "The warning message, but still need to look into code",
message = function(c) " The friendly message, but take precautions")
}
# Calling the function
get_condition(stop("!"))## [1] "Unexpected error occurred"
## [1] "The warning message, but still need to look into code"
## [1] " The friendly message, but take precautions"
## [1] 10000
Blok kode try() tidak menghentikan kode Anda dan tidak menyediakan mekanisme untuk menangani pengecualian. Untuk tujuan ini, kita dapat menggunakan blok tryCatch() dalam menangani pengecualian. Fungsi tryCatch() menentukan “handler” yang mengontrol apa yang terjadi ketika suatu kondisi diberi sinyal. Berbagai tindakan dapat dilakukan untuk “warnings”, “messages”, dan “interrupts”.
withCallingHandlers() di R
Dalam R, fungsi withCallingHandlers() adalah varian dari tryCatch(). Perbedaannya adalah tryCatch() menangani handler yang keluar, sedangkan withCallingHandlers() hanya menangani handler lokal. Metode ini memuat driver lokal sedangkan tryCatch() mendaftarkan driver yang sudah ada. Ini berguna untuk menangani pesan menggunakan metode withCallingHandlers() daripada tryCatch(), karena metode ini akan menghentikan program.
Contoh:
check <- function(expression){
withCallingHandlers(expression,
warning = function(w){
message("warning:\n",w)
},
error = function(e){
message("error:\n",e)
},
finally = {
message("Completed")
})
}
check({10/2})## Completed
## [1] 5
Debugging adalah proses membersihkan kode program dari error agar dapat berjalan dengan sukses. Saat menulis kode, beberapa kesalahan atau masalah secara otomatis muncul setelah kode dijalankan dan lebih sulit untuk didiagnosis. Jadi perbaikannya akan memakan banyak waktu dan melalui beberapa tahapan pemanggilan fungsi.
Seperti yang dijelaskan di atas, proses debugging di R dilakukan dengan memperhatikan “warnings”, “messages”, dan “errors”. Ini yang dimaksud dengan fitur-fitur debugging. Selain fungsi try(), tryCatch(), dan withCallingHandlers(), masih ada lagi fungsi debugging yang bisa digunakan antara lain:
- Editor breakpoint
traceback(): Kode ini mencetak tumpukan panggilan fungsi ketika terjadi kesalahan; tidak melakukan apa pun jika tidak ada kesalahan.browser(): Ini menghentikan sementara eksekusi fungsi di mana pun fungsi tersebut dipanggil dan mengalihkan fungsi ke mode debug.debug(): Ini menandai fungsi untuk mode “debug”, yang memungkinkan Anda untuk menjalankan fungsi baris demi baris.recover(): Ini memungkinkan Anda untuk memodifikasi perilaku kesalahan sehingga Anda dapat menelusuri tumpukan panggilan fungsi.
Editor breakpoint
Di RStudio, Editor breakpoint dapat ditambahkan dengan mengklik di sebelah kiri baris di Console RStudio atau dengan menekan Shift + F9 saat kursor berada di baris tersebut. Editor breakpoint sama dengan browser(), tetapi tidak melibatkan perubahan kode. Editor breakpoint ditandai dengan lingkaran merah di sebelah kiri, yang menunjukkan bahwa mode debug akan diaktifkan pada baris ini saat kode sumber dijalankan.
Fungsi traceback()
Fungsi traceback() digunakan untuk memberikan semua informasi tentang bagaimana fungsi Anda sampai pada kesalahan tersebut. Fungsi ini menunjukkan semua fungsi yang dipanggil sebelum kesalahan terjadi, yang disebut “call stack” dalam beberapa bahasa pemrograman. R lebih menyukai untuk memanggilnya sebagai traceback.
Contoh:
# Function 1
new_function_1 <- function(a){
a + 5
}
# Function 2
new_function_2 <- function(b) {
new_function_1(b)
}
# Calling function
new_function_2(2)## [1] 7
## No traceback available
Fungsi traceback() mencetak tumpukan panggilan fungsi setelah terjadi kesalahan. Tumpukan fungsi adalah urutan fungsi yang dipanggil sebelum kesalahan terjadi. Fungsi traceback() menunjukkan berapa level yang telah Anda lewati saat kesalahan terjadi.
Contoh:

Fungsi traceback() harus dipanggil sesaat setelah error kode program terjadi. Ketika error lain terjadi, maka kamu akan kehilangan informasi sebelumnya.
Fungsi debug()
Fungsi debug() memulai debugger interaktif (juga dikenal sebagai “browser” di R) untuk fungsi tersebut. Dengan menggunakan debugger, Anda harus menelusuri fungsi R satu ekspresi pada satu waktu untuk menentukan dengan tepat di mana kesalahan terjadi. Fungsi debug() mengambil sebagai argumen pertamanya. Berikut adalah contoh debugging fungsi lm().
Fungsi browser()
Fungsi browser() disematkan dalam fungsi untuk membuka debugger R interaktif. Fungsi ini menghentikan eksekusi function() dan Anda dapat menjelajahi fungsi tersebut dengan lingkungannya sendiri. Dalam mode debug, kita dapat memodifikasi objek, melihat objek di lingkungan saat ini, dan juga melanjutkan eksekusi. R console akan mengkonfirmasi bahwa Anda berada dalam mode debug. Berikut beberapa perintah yang perlu diikuti:
ls(): Ini adalah objek-objek yang tersedia di lingkungan saat ini.print(): Digunakan untuk mengevaluasi objek.n: Digunakan untuk menguji pernyataan lain.s: Digunakan untuk menguji perintah berikutnya dengan memasukkan fungsi call.where: Ini adalah hasil cetak jejak tumpukan (stack trace).c: Untuk keluar dari mode debug dan lanjut eksekusi.C: Keluar dari mode debugger dan kembali ke prompt R.
Fungsi recover()
Fungsi recovery() dapat digunakan untuk memodifikasi perilaku kesalahan R ketika terjadi kesalahan. R akan mencetak pesan kesalahan, keluar dari fungsi, dan mengembalikan Anda ke ruang kerja Anda untuk menunggu perintah selanjutnya.
Contoh:
# Calling recover
options(error = recover)
# Function 1
function_1 <- function(a){
a + 5
}
# Function 2
function_2 <- function(b) {
function_1(b)
}
# Calling function
function_2(45)## [1] 50
8.5 Mengelola File Eksternal di R
Pada bab sebelumnya kita telah berinteraksi dengan data sekunder baik yang difasilitasi oleh R data() maupun dari sebuah package R seperti “spheredata” (Santoso et al., 2025). Seringkali sumber data berasal dari file eksternal misalnya dalam format .csv, .txt, .xlsx, dan lain-lain. Kali ini kita ingin mempelajari bagaimana mengimpor data eksternal tersebut dan mengolahkan dalam lingkungan pemrograman R. Tahapan dalam mengelola file eksternal di R dapat dilakukan dalam bentuk sebagai berikut.
- Mengatur direktori kerja
- Membuat file dengan R
- Mengimpor file eksternal
- Memeriksa status file
- Memberi nama file
Mengatur Direktori Kerja R
Direktori kerja adalah lokasi “folder” kerja dalam media penyimpanan komputer kita. Direktori kerja sekarang bisa dilihat dalam Tab file seperti gambar di bawah ini. Semua file yang dihasilkan dan diproses dalam R, “akarnya” berasal dari lokasi ini. Jika Anda ingin meletakkan file maka lokasi ini adalah tempat dimana file itu berada.

Mengetahui lokasi direktori kerja adalah sangat penting untuk diperhatikan khususnya bagi programmer pemula. Kadang-kadang pemula mengalami kesalahan ketika gagal dalam mengimpor file eksternal ke dalam lingkungan R. Masalah yang sering ditemukan adalah pemula tidak menyadari lokasi direktori kerja sehingga meletakkan file yang ingin diimpor di luar dari direktori kerja sehingga R gagal dalam mengenali file tersebut.
Untuk mengetahui lokasi direktori kerja, Anda bisa pergi ke Tab Files dan lihatlah dimana folder itu berada. Untuk mengubah lokasi direktori kita bisa lakukan dengan klik Session > Set Working Directory > Choose Directory, lalu pilihlah secara bebas dimana lokasi file kamu akan ditentukan.

Penentuan lokasi direktori kerja sangat penting. Anda tidak perlu khawatir dengan masalah ini. Yang terpenting adalah Anda harus mengenali dimana Anda akan bekerja dalam R? Dimana file tersebut berada? Jika semua ini dilakukan dengan tepat maka R tidak akan pernah bermasalah dengan urusan datamu.
Membuat file dengan R
Misalkan kita sekarang ingin membuat file data yang telah difasilitasi oleh R melalui data() yang kemudian kita simpan dalam folder penyimpanan komputer kita. Membuat file dataset bisa kita lakukan dengan menggunakan fungsi write.table(). Berikut ini adalah sintaks dari fungsi write.table().
Syntax:
write.table(x= data, file = “file-name-with-extension”)
x: nama objek R yang akan disimpan datanyafile: lokasi direktori dimana file akan disimpan
Contoh:
Misalkan kita ingin menyimpan dataset “ToothGrowth” sebagai file eksternal di folder penyimpanan kita dengan nama “Data_ToothGrowth.txt” yang kita simpan dalam format “.txt”.
Hasilnya seharusnya sudah ada file baru bernama “Data_ToothGrowth.txt” di lokasi direktori kerja. Format “.txt” adalah salah contoh dalam presentasi ini. Anda bisa mencoba format lain yang sering digunakan dalam dataset seperti “.csv”, “.xlsx, atau yang lain. Apakah kamu punya ide format apa yang bisa digunakan untuk menyimpan data?
Contoh:
Misalkan kita ingin menyimpan file dataset dengan format .csv (comma separated value).
# here we are writing the dataset using csv format
write.table(x = ToothGrowth, "Data_ToothGrowth.csv", sep = ";")MIsalkan kita ingin menyimpan file dataset dengan format .xlsx (format standar dari Microsoft Excel). Untuk menulis ini, R tidak memfasilitasi fungsi bawaan sehingga kita perlu menginstall package eskternal yaitu “writexl”. Sebelum kita panggil dengan library(writexl) pastikan kamu sudah menginstallnya dengan menjalankan install.packages(writexl) atau menjalankan seperti yang pernah dijelaskan di Bab 1.
## Warning: package 'writexl' was built under R version 4.5.3
Mengimpor File Eksternal di R
Operasi kita berikutnya adalah untuk mengolah file yang kita miliki di R. Langkahnya yaitu mengimpor file yaitu kita ingin membaca atau memuat data yang akan diolah di dalam file. Salah satu fungsi bawaan yang bisa diakses adalah fungsi read.table() untuk membaca konten dari file yang dilewatkan sebagai argumennya. Berikut ini adalah sintaks dari fungsi tersebut.
Syntax:
read.table(“file-name-to-read-with-extension”)
Sebelumnya kita telah memiliki dataset dengan nama “Data_ToothGrowth.txt”. Sekarang kita muat data tersebut kembali ke lingkungan kerja kita.
## len supp dose
## 1 4.2 VC 0.5
## 2 11.5 VC 0.5
## 3 7.3 VC 0.5
## 4 5.8 VC 0.5
## 5 6.4 VC 0.5
## 6 10.0 VC 0.5
Seharusnya pada contoh sebelumnya kita pernah menghasilkan file “Data_ToothGrowth.csv” dan “Data_ToothGrowth.xlsx”. Untuk memuat data berformat .csv kita perlu menggunakan fungsi lain yang juga sudah disediakan oleh bawaan R yaitu read.csv(). Disini terdapat argumen sep = ... yang kita teruskan sesuai dengan yang pernah kita gunakan pada saat menulis data. Argumen ini berfungsi untuk mendefinisikan “separator” yang digunakan untuk memisahkan data antar kolom.
Contoh:
## len supp dose
## 1 4.2 VC 0.5
## 2 11.5 VC 0.5
## 3 7.3 VC 0.5
## 4 5.8 VC 0.5
## 5 6.4 VC 0.5
## 6 10.0 VC 0.5
Contoh:
Untuk membaca file dengan format Microsoft Excel (.xlsx), R tidak memfasilitasi fungsi bawaan sehingga kita perlu menginstall package eskternal yaitu “readxl”. Sebelum kita panggil fungsi read_xlsx dengan library(readxl) pastikan Anda sudah menginstallnya dengan menjalankan install.packages(readxl) atau menjalankan langkah seperti yang pernah dijelaskan di Bab 1.
## # A tibble: 6 × 3
## len supp dose
## <dbl> <chr> <dbl>
## 1 4.2 VC 0.5
## 2 11.5 VC 0.5
## 3 7.3 VC 0.5
## 4 5.8 VC 0.5
## 5 6.4 VC 0.5
## 6 10 VC 0.5
8.6 Tugas (Project-Based Learning)
Perhatikan beberapa kasus masalah di bawah ini dan analisislah permasalahan tersebut. Jelaskan bagaimana Anda mengatasi masalah (bug) tersebut?!
- Masalah 1

- Masalah 2

- Masalah 3

- Masalah 4

- Masalah 5

8.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.
8.8 Penutup
Sampai bab ini, kita telah mempelajari dasar-dasar untuk penanganan kesalahan pemrograman dan berurusan dengan file eksternal di R. Semua pengetahuan ini bisa dipraktekkan bersama dengan contoh yang telah diberikan. Menangani masalah kode program (debugging) bisa dianalisis dengan beberapa fungsi yang telah dibahas seperti try(), tryCatch(), withCallingHandlers(), dan lain-lain. Ketika berurusan dengan data eksternal, kita bisa mengelola file seperti membuat, membaca (import), menghapus, dan menulis.