Ekspresi dan Pencetakan Otomatis
R adalah bahasa ekspresi: hampir setiap baris yang kamu tulis menghasilkan sebuah nilai. Di console, ekspresi yang diketik sendirian akan dievaluasi dan nilainya dicetak otomatis, tanpa perlu print():
Setiap hasil diawali [1], yaitu cara R memberi tahu posisi nilai pertama yang ditampilkan, petunjuk awal bahwa R berpikir dalam vector (selengkapnya di bawah). Pencetakan otomatis punya satu catatan yang perlu kamu tahu sejak hari pertama: ia hanya berlaku untuk ekspresi polos di tingkat atas. Ekspresi yang sama di dalam badan fungsi atau for loop tidak mencetak apa pun, itulah sebabnya script memakai cat() atau print() secara eksplisit untuk output yang harus kamu lihat.
Assignment: Tanda Panah
Operator assignment R adalah <-, tanda panah yang menunjuk ke nama yang menerima nilai:
Bacalah radius <- 5 sebagai "radius mendapat 5". Ya, = juga bisa dipakai untuk assignment di tingkat atas, dan ya, pendatang baru sering bertanya kenapa orang mau mengetik dua karakter alih-alih satu. Jawabannya adalah konvensi yang ditegakkan dengan serius: setiap panduan gaya utama, dokumentasi R dasar, dan praktis semua kode R yang akan kamu baca memakai <- untuk assignment, dan menyimpan = untuk satu tugas khusus, yaitu memberi nama argumen di dalam pemanggilan fungsi (bagian berikutnya). Mengikuti konvensi ini membuat kedua operasi itu terlihat berbeda. Di RStudio, Alt+- (Option+- di macOS) mengetikkan tanda panah untukmu.
Perhatikan bahwa assignment tidak dicetak otomatis: area <- 78.5 menyimpan nilainya tanpa suara. Itulah sebabnya potongan kode di atas butuh print().
Case Sensitive
R membedakan huruf besar dan kecil secara ketat, baik pada nama yang kamu buat maupun nama yang disediakan bahasanya:
Dua variabel yang berbeda. Begitu juga mean() adalah sebuah fungsi, sedangkan Mean() tidak ada. Ketika R menyambutmu dengan object 'x' not found atau could not find function, periksa huruf besar dan kecilnya sebelum hal lain: ini error pemula yang paling umum.
Pemanggilan Fungsi dan Argumen Bernama
Fungsi dipanggil dengan tanda kurung, dan argumennya dipisahkan koma. Argumen bisa dicocokkan berdasarkan posisi, nama, atau campuran keduanya:
Panggilan seq() menunjukkan sintaks argumen bernama di R, dan di sinilah = menjalankan tugasnya: di dalam panggilan, name = value memberi label pada argumen. Argumen bernama membebaskanmu dari keharusan mengingat urutan parameter, dan membuat panggilan menjelaskan dirinya sendiri; seq(0, 100, 25) bekerja sama persis tetapi memberi tahu pembaca lebih sedikit. Konvensi yang biasa dipakai: berikan argumen pertama (biasanya datanya) berdasarkan posisi, dan beri nama sisanya.
Mendapat bantuan untuk fungsi apa pun cukup dengan satu ketikan: ?seq di console membuka dokumentasinya.
Semuanya Adalah Vector
Gagasan yang membuat R terasa berbeda dari bahasa lain: tidak ada angka tunggal yang berdiri sendiri. Bahkan 5 adalah vector dengan panjang satu, dan operasi berlaku per elemen pada seluruh vector:
Tidak ada perulangan sama sekali, tetapi setiap elemen dikonversi. Di kebanyakan bahasa, itu berarti tiga iterasi for loop; di R, itu cukup aritmetika. Inilah vektorisasi, dan ia membentuk segalanya: operator perbandingan, fungsi string, dan fungsi matematika semuanya bekerja dengan cara ini. Itu sebabnya kode R yang idiomatis punya jauh lebih sedikit perulangan dari dugaanmu; cerita lengkapnya ada di vector.
Kurung Kurawal dan Blok
Badan yang terdiri dari beberapa baris, untuk if, perulangan, dan fungsi, dikelompokkan dengan kurung kurawal {}:
Ada dua hal yang perlu diperhatikan. Kondisinya berada di dalam tanda kurung, dan bentuknya if biasa, bukan if: atau if ... then. Dan tidak seperti Python, indentasi tidak punya arti di R: kurung kurawal yang menentukan blok, indentasi hanya untuk manusia. Tidak memakai kurung kurawal untuk satu baris itu sah, tetapi merupakan sumber klasik bug saat mengedit; selalu pakai saja.
Spasi dan Titik Koma
R mengabaikan spasi berlebih, dan baris baru mengakhiri sebuah pernyataan, tanpa perlu titik koma:
Pemisahan ke beberapa baris itu berhasil karena baris ketiga diakhiri +, jadi R tahu ekspresinya belum selesai. Itulah satu aturan yang perlu diingat saat memecah baris yang panjang: pecah sesudah operator atau koma, jangan pernah sebelumnya, karena R akan menganggap baris pertama sudah lengkap. Titik koma hanya ada untuk menjejalkan dua pernyataan ke satu baris (a <- 1; b <- 2): sah, tidak dianjurkan, dan mudah dihindari.
Gaya: Cara Kode R Ditulis
Di luar tata bahasanya, R punya konvensi komunitas yang kuat (dibakukan dalam panduan gaya tidyverse, yang diikuti sebagian besar ekosistem):
<-untuk assignment,=hanya untuk argumen di dalam panggilan.- Nama
snake_case:monthly_revenue, bukanmonthlyRevenueataumonthly.revenue. Titik sah dipakai di nama R, tetapi sebaiknya dihindari, karena bertabrakan dengan pola penamaan yang dipakai bagian internal R. - Spasi di sekitar operator (
x <- a * 2, bukanx<-a*2) dan sesudah koma. - Indentasi empat spasi di dalam kurung kurawal (beberapa tim memakai dua; pilih satu dan tetap konsisten).
- Satu pernyataan per baris.
Tidak satu pun dari ini ditegakkan oleh interpreter. Semuanya ditegakkan oleh siapa pun yang membaca kodemu. Pembahasan soal penamaan berlanjut di variabel.
Yang Perlu Kamu Ingat
- R mengevaluasi ekspresi dan mencetak ekspresi polos secara otomatis di console, tetapi tidak di dalam fungsi atau perulangan.
- Lakukan assignment dengan
<-("mendapat"); pakai=hanya untuk memberi nama argumen di pemanggilan fungsi. - R sepenuhnya case sensitive: salah ketik huruf besar dan kecil menyebabkan sebagian besar error "not found" di awal belajar.
- Semuanya adalah vector, dan operasi berlaku per elemen:
c(1, 2, 3) * 2adalah2 4 6, tanpa perulangan. - Kurung kurawal menentukan blok, baris baru mengakhiri pernyataan, dan
snake_casebeserta konvensi spasi membuat kodemu terbaca seperti kode orang lain.
Berikutnya: komentar, yaitu cara memberi catatan pada kode R, dan apa yang bisa dilakukan karena R tidak punya sintaks komentar blok.
Pertanyaan yang sering diajukan
Apa arti <- di R?
<- adalah operator assignment R: x <- 5 menyimpan nilai 5 dengan nama x. Bacalah sebagai 'mendapat'. = juga bisa melakukan assignment di tingkat atas, tetapi konvensi komunitas, yang ditegakkan oleh setiap panduan gaya utama, adalah <- untuk assignment dan = hanya untuk memberi nama argumen di dalam pemanggilan fungsi.
Apakah R case sensitive?
Ya, sepenuhnya. total, Total, dan TOTAL adalah tiga nama yang berbeda, dan memanggil Mean(x) alih-alih mean(x) menghasilkan error, bukan peringatan. Error 'could not find function' atau 'object not found' sangat sering hanya disebabkan salah ketik huruf besar dan kecil.
Apakah aku butuh titik koma di R?
Tidak. Baris baru mengakhiri sebuah pernyataan. Titik koma hanya diperlukan untuk menjejalkan dua pernyataan ke satu baris (a <- 1; b <- 2), yang memang tidak dianjurkan oleh panduan gaya. Tulis satu pernyataan per baris dan kamu tidak perlu memikirkan titik koma lagi.
Apa artinya R tervektorisasi?
Operasi dasar R bekerja pada seluruh vector sekaligus. c(1, 2, 3) * 2 menghasilkan 2 4 6: perkaliannya berlaku untuk setiap elemen tanpa perulangan. Sebagian besar kode yang di bahasa lain berupa for loop cukup ditulis sebagai satu ekspresi di R.