Cara Membuat Variabel di R
Variabel di R adalah sebuah nama yang dilekatkan ke sebuah nilai. Kamu membuatnya dengan tanda panah assignment <-: namanya di depan panah, nilainya di belakang.
Tiga variabel, tiga jenis nilai yang berbeda, dan tidak ada deklarasi tipe sama sekali: R menyimpulkan tipenya dari nilai itu sendiri (selengkapnya di tipe data). Begitu sebuah variabel ada, kamu bisa memakainya di mana pun kamu akan memakai nilainya:
Assignment ulang bekerja dengan cara yang sama. Sebuah variabel dengan senang hati beralih ke nilai baru, bahkan tipe baru, begitu kamu melakukan assignment lagi:
R tidak protes ketika sebuah string berubah menjadi angka. Fleksibilitas ini praktis, tetapi kalau arti sebuah variabel bergeser di tengah script, biasanya itu tanda untuk memilih nama baru.
Kenapa R Memakai <- Alih-alih =
Inilah pertanyaan yang ditanyakan semua orang: age = 30 juga berhasil, jadi kenapa setiap buku R, panduan gaya, dan package memakai tanda panah?
Karena = di R adalah dua hal yang berbeda tergantung di mana ia muncul. Di tingkat atas, ia melakukan assignment. Di dalam pemanggilan fungsi, ia mencocokkan argumen berdasarkan nama, dan tidak membuat variabel:
Kalau kamu mencoba mean(values, na.rm <- TRUE), kamu tidak sengaja membuat variabel global bernama na.rm dan memberikan TRUE berdasarkan posisi: sah, salah, dan sulit ditemukan. Konvensi yang menjaga semuanya tetap mudah dibaca itu sederhana:
<-selalu berarti assignment.=selalu berarti "argumen ini mendapat nilai ini" di dalam pemanggilan sebuah fungsi.
Ikuti pembagian itu, dan setiap baris R yang kamu baca langsung memberi tahu apakah sesuatu sedang dibuat atau diberikan. Inilah aturan gaya yang paling universal di dunia R; RStudio bahkan memberi <- shortcut keyboard sendiri (Alt+-).
Sepupu yang Jarang Dipakai: ->, =, dan assign()
R punya dua cara assignment lagi, keduanya layak dikenali meskipun jarang kamu tulis.
Panah terbalik -> melakukan assignment ke arah sebaliknya, nilainya dulu, namanya terakhir:
Sesekali kamu akan melihatnya di akhir pipeline yang panjang ("hitung semua ini, lalu simpan"), tetapi kebanyakan panduan gaya menyarankan untuk menghindarinya: pembaca mencari nama yang didefinisikan di awal baris.
assign() membuat variabel dari sebuah string, artinya namanya bisa dibuat saat program berjalan:
Ini terlihat cerdas, tetapi hampir selalu alat yang salah: sekumpulan variabel bernomor sebenarnya adalah vector atau list yang sedang menyamar. Pakai assign() hanya ketika sebuah nama memang harus dihitung; pasangannya, get("score"), membaca variabel berdasarkan nama string.
Aturan Penamaan
R menerima nama yang:
- Berisi huruf, angka, titik (
.), dan garis bawah (_). - Diawali huruf, atau titik yang tidak diikuti angka.
- Bukan kata khusus (
if,for,TRUE,NULL,function, dan beberapa lainnya).
Jadi semua ini valid:
Dan ini tidak:
2nd_user: tidak boleh diawali angka._temp: juga tidak boleh diawali garis bawah (tidak seperti Python).user-name: tanda hubung adalah pengurangan, bukan karakter nama.TRUE: kata khusus.
Nama bersifat case sensitive: total, Total, dan TOTAL adalah tiga variabel yang tidak berhubungan, dan R tidak akan memperingatkanmu ketika salah ketik melahirkan variabel baru.
Melihat dan Menghapus: ls() dan rm()
Setiap variabel yang kamu buat masuk ke workspace (global environment). ls() mendaftar isinya, dan rm() menghapusnya:
Ada dua detail yang perlu diketahui. Pertama, rm(list = ls()) menghapus seluruh workspace: praktis di awal sesi eksplorasi, merusak di tempat lain. Kedua, nama yang diawali titik (seperti .cache) disembunyikan dari ls() kecuali kamu memanggil ls(all.names = TRUE), konvensi yang sama dengan file tersembunyi di Unix.
Konvensi Penamaan: Pakai snake_case
Di luar aturan wajib, komunitas R modern (dan panduan gaya tidyverse) sudah menyepakati beberapa konvensi:
lower_snake_caseuntuk variabel dan fungsi:retry_count,fit_model.- Titik di nama itu sah, tetapi kuno: R dasar penuh dengan nama dari era
data.framesepertimy.data, tetapi titik juga punya arti di sistem method S3 milik R (print.data.frameadalah "method print untuk data frame"), jadi kode baru menghindarinya. - Tanpa awalan ala Hungarian, tanpa camelCase: kamu akan melihat
camelCasedi package lama, tetapi snake_case adalah pilihan akhir ekosistemnya. - R tidak punya konstanta sungguhan; konvensinya adalah menamai calon konstanta dengan huruf kapital (
MAX_RETRIES <- 5) dan tidak melakukan assignment ulang padanya.
Pilih nama yang deskriptif dan tetap konsisten. avg_score hanya butuh empat ketikan lebih banyak daripada as, tetapi menyelamatkan setiap pembaca berikutnya dari keharusan menggulir kembali ke atas script.
Yang Perlu Kamu Ingat
name <- valuemembuat variabel; komunitas menyimpan=untuk argumen fungsi.->danassign()memang ada; kamu akan lebih sering membacanya daripada seharusnya menulisnya.- Nama memakai huruf, angka, titik, dan garis bawah; tidak boleh diawali angka atau garis bawah, dan bersifat case sensitive.
ls()menampilkan workspace,rm()membersihkannya.- Tulis
snake_casedan kodemu akan terlihat seperti R yang ditulis semua orang saat ini.
Berikutnya: jenis nilai apa yang sebenarnya disimpan variabel-variabel itu, yaitu numeric, integer, character, dan logical.
Pertanyaan yang sering diajukan
Bagaimana cara membuat variabel di R?
Tulis namanya, tanda panah assignment <-, lalu nilainya: age <- 30. R menentukan tipenya dari nilai itu, tanpa langkah deklarasi. age = 30 juga bisa di tingkat atas, tetapi konvensi komunitasnya adalah <-.
Apa bedanya <- dan = di R?
Di tingkat atas sebuah script, keduanya melakukan hal yang sama. Di dalam pemanggilan fungsi, tidak: mean(x, na.rm = TRUE) memakai = untuk mencocokkan argumen berdasarkan nama, bukan untuk membuat variabel. Karena = memainkan dua peran tergantung konteksnya, panduan gaya R menyimpan <- untuk assignment dan = untuk argumen.
Bagaimana cara menghapus variabel di R?
rm(x) menghapus variabel x dari workspace. rm(list = ls()) menghapus semuanya: berguna untuk memulai dari awal, berbahaya di tengah analisis. ls() mendaftar apa saja yang ada saat ini.
Apakah nama variabel R boleh mengandung titik?
Boleh: my.data adalah nama yang sepenuhnya sah, dan kode R lama memakai titik di mana-mana. Gaya modern lebih menyukai garis bawah (my_data) karena titik juga punya arti di sistem method S3 milik R, sehingga nama bertitik jadi ambigu saat dibaca.