Proyek R dan Pengelolaan Ruang Kerja
Buat proyek RStudio dan kelola .RData, .Rhistory, serta .Renviron.
Proyek R dan Pengelolaan Ruang Kerja adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar R Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus R Academy mencakup 4 pelajaran total.
Ruang Kerja R: .RData dan .Rhistory
Secara bawaan, saat Anda keluar dari R, R akan menanyakan apakah Anda ingin menyimpan ruang kerja — semua objek di memori — ke file tersembunyi bernama .RData di direktori kerja. Riwayat perintah Anda disimpan dalam .Rhistory. File-file ini dimuat secara otomatis pada sesi berikutnya.
Kemudahan ini juga dapat menjadi jebakan bagi reproduksibilitas.
# .RData: binary snapshot of all objects in the global environment
# .Rhistory: text file of every command you typed
# See what would be saved right now:
cat('Objects that would be saved:', length(ls()), '\n')
cat('Their names:', paste(ls(), collapse = ', '))
# Workspace saving is controlled by:
# Tools -> Global Options -> General -> Save workspace (NEVER recommended)
# Or at startup: R --no-save --no-restoreMengapa Menghindari Penyimpanan Otomatis .RData?
Mengandalkan .RData berarti hasil Anda tidak dapat direproduksi dari awal. Objek terakumulasi secara tersembunyi dari satu sesi ke sesi lain, variabel lama menutupi variabel baru, dan kolaborator tidak dapat mereplikasi lingkungan Anda. Solusinya: jangan pernah menyimpan ruang kerja — selalu buat ulang dengan menjalankan skrip Anda.
# The recommended R startup setting (in RStudio):
# Tools -> Global Options -> General
# Restore .RData at startup: UNCHECKED
# Save workspace on exit: NEVER
# This forces you to write scripts that are fully self-contained.
# A fresh session that runs cleanly = reproducible analysis.
# Equivalent command-line flags:
# R --no-save --no-restore
cat('Always start fresh!')rm() — Mengosongkan Ruang Kerja
rm(list = ls()) adalah cara kanonis untuk menghapus semua objek dari lingkungan global, sehingga mensimulasikan sesi baru tanpa memulai ulang R. Perintah ini sering ditempatkan di bagian atas skrip untuk memastikan kondisi bersih setiap kali dijalankan.
# Create some objects
a <- 1
b <- 'hello'
df <- data.frame(x = 1:3)
cat('Before rm:', length(ls()), 'objects\n')
# Remove specific objects
rm(a, b)
cat('After rm(a,b):', length(ls()), 'objects\n')
# Remove ALL objects in global environment
rm(list = ls())
cat('After rm(list=ls()):', length(ls()), 'objects')options() — Pengaturan Sesi Global
options() mengendalikan banyak perilaku yang berlaku di seluruh sesi R. Dua opsi yang paling sering ditetapkan adalah scipen (penalti notasi ilmiah) dan digits (jumlah digit signifikan yang dicetak). Tetapkan opsi tersebut di bagian atas skrip agar keluarannya konsisten.
# Default behavior:
cat(0.000123456, '\n') # may show 1.23456e-04
# Suppress scientific notation (positive scipen = prefer fixed)
options(scipen = 999)
cat(0.000123456, '\n') # now shows 0.000123456
# Control printed digits
options(digits = 4)
cat(pi, '\n') # 3.142
# Check current options:
cat('scipen:', getOption('scipen'), '\n')
cat('digits:', getOption('digits')).Renviron — Variabel Lingkungan
File .Renviron menyimpan variabel lingkungan yang dimuat R saat dimulai. File ini merupakan tempat yang tepat untuk rahasia dan nilai konfigurasi, seperti kunci API, kata sandi basis data, dan jalur sistem berkas — sehingga semua itu tidak perlu ditulis dalam kode sumber Anda.
# .Renviron file (in ~ or project root):
# DATABASE_URL=postgres://user:pass@host/db
# OPENAI_API_KEY=sk-abc123
# DATA_ROOT=/data/shared
# Read in R:
db_url <- Sys.getenv('DATABASE_URL')
api_key <- Sys.getenv('OPENAI_API_KEY', unset = 'KEY_NOT_SET')
cat('DB URL set:', nchar(db_url) > 0, '\n')
cat('API key:', api_key)
# To edit .Renviron:
# usethis::edit_r_environ() <- if usethis is installed
# file.edit('~/.Renviron') <- base RsaveRDS() — Menyimpan Satu Objek
saveRDS() membuat serialisasi satu objek R ke file .rds. Fungsi ini merupakan cara yang disarankan untuk menyimpan sementara hasil perhitungan yang mahal, karena file tersebut menyimpan tepat satu objek dan Anda dapat mengendalikan sepenuhnya objek yang disimpan dan dimuat.
# Create an object to save
result_list <- list(
model = 'linear_regression',
r2 = 0.87,
rmse = 12.4,
created = Sys.time()
)
# Save to disk
tmp_rds <- tempfile(fileext = '.rds')
saveRDS(result_list, file = tmp_rds)
cat('Saved to:', tmp_rds, '\n')
# Load it back (even in a fresh session)
loaded <- readRDS(tmp_rds)
cat('R-squared:', loaded$r2)readRDS() — Memulihkan Satu Objek
readRDS() melakukan deserialisasi file .rds kembali menjadi objek R. Berbeda dari load(), nilai hasilnya harus ditetapkan ke sebuah nama — sehingga Anda dapat memuat file yang sama dengan nama berbeda di bagian kode yang berbeda.
# Suppose model_results.rds was saved earlier
tmp <- tempfile(fileext = '.rds')
saveRDS(list(coef = c(1.2, 3.4), n = 100), tmp)
# Load with a meaningful name:
model_output <- readRDS(tmp)
cat('Coefficients:', model_output$coef, '\n')
cat('Sample size:', model_output$n, '\n')
# Key advantage over load():
# With load(), the name is baked into the file.
# With readRDS(), YOU choose the name on load.
cat('readRDS gives you naming control')save() dan load() — Beberapa Objek
save() membuat serialisasi satu atau beberapa objek bernama ke file .RData. load() memulihkannya — tetapi nama aslinya dipulihkan secara otomatis, yang dapat secara diam-diam menimpa objek yang sudah ada. Gunakan dengan hati-hati.
# Save multiple objects at once
scores <- c(85, 92, 78)
labels <- c('Alice', 'Bob', 'Carol')
tmp_rdata <- tempfile(fileext = '.RData')
save(scores, labels, file = tmp_rdata)
cat('Saved to:', tmp_rdata, '\n')
# Remove originals to simulate a new session
rm(scores, labels)
cat('Removed. Objects now:', length(ls()), '\n')
# Load restores original names automatically
load(tmp_rdata)
cat('Restored scores:', scores)saveRDS vs save — Kapan Menggunakan Masing-Masing
Gunakan saveRDS() untuk satu objek saat Anda ingin memiliki kendali penuh atas penamaan saat memuat — ideal untuk keluaran model, set data yang telah diproses, dan hasil yang disimpan sementara. Gunakan save() hanya jika Anda perlu menggabungkan beberapa objek bernama untuk alur kerja kolaborator tertentu.
# saveRDS: one object, you name it on load
# saveRDS(my_model, 'outputs/model_v2.rds')
# m <- readRDS('outputs/model_v2.rds') <- your name choice
# save: multiple objects, names fixed in the file
# save(model, validation_df, file = 'outputs/session.RData')
# load('outputs/session.RData') <- restores 'model' and 'validation_df'
# Practical rule:
# saveRDS for caching single results
# save for snapshots shared between collaborators
cat('saveRDS is usually the better choice')Memeriksa dan Memulihkan options()
Opsi yang ditetapkan selama sesi hanya berlaku selama sesi tersebut. Untuk memastikan skrip Anda mandiri, tetapkan opsi yang diperlukan di bagian atas dan, jika diinginkan, pulihkan nilai lama saat skrip selesai menggunakan on.exit().
# Capture current options before changing
old_options <- options(scipen = 999, digits = 3)
# Use on.exit to restore them no matter what
on.exit(options(old_options), add = TRUE)
# Now do your work
cat(pi, '\n') # 3.14
cat(1234567.89, '\n') # 1234568 (no sci notation)
# When function or script exits, options are restored automatically
cat('Options will restore on exit')Proyek RStudio untuk Mengelola Ruang Kerja
Proyek RStudio (file .Rproj) secara otomatis menetapkan direktori kerja ke akar proyek, menyimpan .Rhistory terpisah untuk setiap proyek, dan mengisolasi opsi sesi. Ini adalah cara standar untuk mengelola proyek R yang mandiri.
# When you open a .Rproj file, RStudio automatically:
# 1. Sets working directory to the project root
# 2. Loads the project-specific .Rhistory
# 3. Optionally restores project .RData
# Best practice for new projects:
# File -> New Project -> New Directory -> New Project
# Your project structure then looks like:
# my_project/
# my_project.Rproj
# .Rprofile (project-level options)
# .Renviron (project-level env vars)
# R/ (scripts)
# data/ (raw data)
# output/ (results)
cat('RStudio Projects = clean workspaces')Pemeriksaan Singkat
Anda ingin menyimpan kerangka data R bernama clean_data ke disk agar dapat memuatnya kembali dalam skrip lain dengan nama variabel apa pun yang Anda pilih. Fungsi apa yang harus Anda gunakan?
Pengelolaan Ruang Kerja — Inti Pembelajaran
Ruang kerja R yang dikelola dengan baik merupakan dasar analisis yang dapat direproduksi:
.RData/.Rhistory— file ruang kerja yang disimpan otomatis (nonaktifkan penyimpanan otomatis!)rm(list = ls())— menghapus semua objek untuk memulai dari kondisi bersihoptions(scipen = 999, digits = 4)— mengendalikan pemformatan angka.Renviron— menyimpan kunci API dan jalur sebagai variabel lingkungansaveRDS(obj, 'file.rds')— menyimpan sementara satu objekreadRDS('file.rds')— memulihkan dengan nama Anda sendirisave(a, b, file = 'session.RData')— menggabungkan beberapa objekload('session.RData')— memulihkan semua objek yang digabungkan- Gunakan Proyek RStudio untuk mengelola direktori kerja secara otomatis
# Typical script header for clean, reproducible analysis:
rm(list = ls()) # clean workspace
options(scipen = 999, digits = 4) # formatting
# Load secrets from .Renviron:
db_url <- Sys.getenv('DATABASE_URL')
# Load cached data if available:
cache_file <- file.path('cache', 'processed_data.rds')
if (file.exists(cache_file)) {
df <- readRDS(cache_file)
cat('Loaded from cache\n')
} else {
cat('Cache not found, run data_prep.R first\n')
}
cat('Workspace ready')Pertanyaan yang Sering Diajukan
Apakah pelajaran “Proyek R dan Pengelolaan Ruang Kerja” gratis?
Ya — teks lengkap “Proyek R dan Pengelolaan Ruang Kerja” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus R Academy, upgrade ke CoddyKit PRO. Kursus R Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Proyek R dan Pengelolaan Ruang Kerja”?
Buat proyek RStudio dan kelola .RData, .Rhistory, serta .Renviron. Kamu berlatih R Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai R Academy?
Tidak diperlukan pengalaman sebelumnya. R Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Proyek R dan Pengelolaan Ruang Kerja” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran R Academy ini?
Ya. Setiap pelajaran R Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Menggunakan source() untuk Memuat Skrip
- Komentar, Gaya, dan Keterbacaan
- Direktori Kerja dan Jalur File
- Proyek R dan Pengelolaan Ruang Kerja