Projek R dan Pengurusan Ruang Kerja
Cipta projek RStudio dan urus .RData, .Rhistory serta .Renviron.
Projek R dan Pengurusan Ruang Kerja ialah pelajaran R Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran R Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus R Academy merangkumi sejumlah 4 pelajaran.
R Workspace: .RData dan .Rhistory
Secara lalai, apabila anda keluar daripada R, R akan bertanya sama ada anda mahu menyimpan ruang kerja — semua objek dalam memori — ke dalam fail tersembunyi bernama .RData di direktori kerja. Sejarah arahan anda disimpan dalam .Rhistory. Fail-fail ini dimuatkan secara automatik pada sesi seterusnya.
Kemudahan ini juga boleh menjadi perangkap kepada kebolehulangan semula.
# .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 Elakkan Penyimpanan Automatik .RData?
Bergantung pada .RData bermakna hasil anda tidak boleh dihasilkan semula dari awal. Objek terkumpul secara tidak kelihatan merentas sesi, pemboleh ubah lama membayangi pemboleh ubah baharu, dan rakan usaha sama tidak dapat meniru persekitaran anda. Penyelesaiannya: jangan simpan ruang kerja — sentiasa ciptakannya semula 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()) ialah cara piawai untuk mengalih keluar semua objek daripada persekitaran global, sekali gus mensimulasikan sesi baharu tanpa memulakan semula R. Ia sering diletakkan di bahagian atas skrip untuk memastikan keadaan bersih setiap kali skrip 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() — Tetapan Sesi Global
options() mengawal banyak tingkah laku yang meliputi seluruh sesi R. Dua pilihan yang paling kerap ditetapkan ialah scipen (penalti tatatanda saintifik) dan digits (bilangan digit bererti yang dicetak). Tetapkan pilihan ini di bahagian atas skrip untuk mendapatkan output yang 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 — Pemboleh Ubah Persekitaran
Fail .Renviron menyimpan pemboleh ubah persekitaran yang dimuatkan oleh R semasa permulaan. Fail ini sesuai untuk menyimpan rahsia dan nilai konfigurasi seperti kunci API, kata laluan pangkalan data dan laluan sistem fail — supaya semua itu tidak dimasukkan ke dalam kod 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() menyerikan satu objek R ke dalam fail .rds. Ini ialah cara yang disyorkan untuk menyimpan sementara hasil pengiraan yang mahal, kerana fail tersebut menyimpan tepat satu objek dan anda mengawal dengan tepat perkara yang disimpan dan dimuatkan.
# 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() menyahserikan fail .rds kembali menjadi objek R. Tidak seperti load(), nilai yang dikembalikan mesti diberikan kepada satu nama — jadi anda boleh memuatkan fail yang sama dengan nama yang berbeza di bahagian berlainan kod anda.
# 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() — Berbilang Objek
save() menyerikan satu atau lebih objek bernama ke dalam fail .RData. load() memulihkannya — tetapi nama asal dipulihkan secara automatik, yang boleh menulis ganti objek sedia ada tanpa disedari. Gunakan dengan berhati-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 berbanding save — Bila Hendak Menggunakan Setiapnya
Gunakan saveRDS() untuk objek tunggal apabila anda mahukan kawalan penuh terhadap penamaan semasa pemuatan — sesuai untuk output model, set data yang diproses dan hasil yang disimpan sementara. Gunakan save() hanya apabila anda perlu menggabungkan beberapa objek bernama untuk aliran kerja rakan usaha sama 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')Menyemak dan Memulihkan options()
Pilihan yang ditetapkan semasa sesuatu sesi hanya kekal untuk sesi tersebut. Untuk memastikan skrip anda lengkap dengan sendirinya, tetapkan pilihan yang diperlukan di bahagian atas dan, jika mahu, pulihkan nilai lama apabila 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')Projek RStudio untuk Pengurusan Ruang Kerja
Projek RStudio (fail .Rproj) menetapkan direktori kerja kepada akar projek secara automatik, mengekalkan .Rhistory yang berasingan bagi setiap projek dan mengasingkan pilihan sesi. Ini ialah cara piawai untuk mengurus projek R yang lengkap dengan sendirinya.
# 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')Semakan Pantas
Anda mahu menyimpan bingkai data R tunggal bernama clean_data ke cakera supaya anda boleh memuatkannya semula dalam skrip lain dengan apa-apa nama pemboleh ubah yang anda pilih. Fungsi manakah yang patut anda gunakan?
Pengurusan Ruang Kerja — Kesimpulan Utama
Ruang kerja R yang diurus dengan baik ialah asas analisis yang boleh dihasilkan semula:
.RData/.Rhistory— fail ruang kerja yang disimpan secara automatik (nyahdayakan penyimpanan automatik!)rm(list = ls())— mengosongkan semua objek untuk mendapatkan keadaan bersihoptions(scipen = 999, digits = 4)— mengawal pemformatan nombor.Renviron— menyimpan kunci API dan laluan sebagai pemboleh ubah persekitaransaveRDS(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 Projek RStudio untuk pengurusan direktori kerja secara automatik
# 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')Pelajari R dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 43
- Pelajaran
- 159
Soalan Lazim
Adakah pelajaran “Projek R dan Pengurusan Ruang Kerja” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran R Academy, termasuk “Projek R dan Pengurusan Ruang Kerja”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus R Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Projek R dan Pengurusan Ruang Kerja”?
Cipta projek RStudio dan urus .RData, .Rhistory serta .Renviron. Anda berlatih R Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan R Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran R Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Projek R dan Pengurusan Ruang Kerja” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran R Academy ini?
Ya. Setiap pelajaran R Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Menggunakan source() untuk Memuatkan Skrip
- Komen, Gaya dan Kebolehbacaan
- Direktori Kerja dan Laluan Fail
- Projek R dan Pengurusan Ruang Kerja