Menggunakan source() untuk Memuat Skrip
Jalankan skrip R eksternal dan bagikan kode antarfile dengan source().
Menggunakan source() untuk Memuat Skrip adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Mengapa Menggunakan Fungsi Pemuatan Skrip?
Seiring bertambah besarnya proyek R Anda, menyimpan semua kode dalam satu file menjadi sulit dikelola. Fungsi source() memungkinkan Anda memuat dan menjalankan file skrip R eksternal, sehingga pekerjaan dapat dibagi menjadi modul-modul yang logis dan dapat digunakan kembali.
Inilah dasar pengembangan R yang teratur.
# Imagine helpers.R contains:
# add <- function(a, b) a + b
# multiply <- function(a, b) a * b
# Load it into your main script:
source('helpers.R')
# Now use the functions defined there:
result <- add(3, 5)
cat('Result:', result)Sintaks Dasar Fungsi Pemuatan Skrip
Bentuk paling sederhana dari source() menerima jalur file sebagai satu-satunya argumen. File tersebut dibaca dan setiap ekspresi di dalamnya dievaluasi dalam lingkungan saat ini, seolah-olah Anda mengetikkan kode itu secara langsung.
# source() with a relative path (file in working directory)
source('my_functions.R')
# source() with an absolute path
source('/Users/alice/projects/utils.R')
# After sourcing, all objects and functions defined
# in the file are available in your current session
cat('Script loaded successfully')Parameter echo
Parameter echo mengatur apakah setiap ekspresi dari file yang dimuat dicetak ke konsol saat dijalankan. Secara bawaan, echo = FALSE, sehingga konsol tetap rapi. Menetapkannya ke TRUE berguna untuk men-debug.
# Default: silent loading (echo = FALSE)
source('helpers.R')
# Verbose: print each expression as it runs
source('helpers.R', echo = TRUE)
# echo = TRUE output looks like:
# > add <- function(a, b) a + b
# > multiply <- function(a, b) a * b
cat('Done')print.eval dan verbose
Dua parameter tambahan memberi Anda kendali yang lebih terperinci atas keluaran. print.eval mengatur apakah hasil ekspresi dicetak, serupa dengan mode interaktif. verbose mencetak informasi tambahan tentang proses pemuatan itu sendiri.
# print.eval: print the VALUE of each expression
source('helpers.R', echo = TRUE, print.eval = TRUE)
# verbose: extra details like file name and line numbers
source('helpers.R', verbose = TRUE)
# Typical use: debugging a complex script
# source('complex_analysis.R', echo = TRUE, print.eval = TRUE)
cat('Parameters explored')Parameter local — Lingkup Terisolasi
Secara bawaan, source() menjalankan kode dalam lingkungan global, sehingga semua objek yang dibuat muncul di ruang kerja Anda. Menetapkan local = TRUE akan menjalankan skrip dalam lingkungan baru yang terisolasi, sehingga ruang kerja global Anda tetap bersih.
# Without local: objects pollute global env
source('data_prep.R') # x, y, temp_df all appear in ls()
# With local = TRUE: objects stay inside
source('data_prep.R', local = TRUE)
# x, y, temp_df are NOT in your global workspace
# Verify nothing leaked:
cat('Objects in workspace:', length(ls()))
# local can also be an environment object:
my_env <- new.env()
source('data_prep.R', local = my_env)sys.source() untuk Pemuatan yang Lebih Aman
sys.source() adalah alternatif tingkat rendah yang melewati sebagian beban tambahan dari source(). Fungsi ini tidak mengubah direktori kerja dan tidak mengevaluasi opsi keepSource. Fungsi ini sering digunakan dalam pengembangan paket dan perkakas internal.
# sys.source() loads a file into a specific environment
utils_env <- new.env()
sys.source('utils.R', envir = utils_env)
# Access functions from that environment explicitly
result <- utils_env$my_helper(10)
cat('Result:', result)
# sys.source does not echo or verbose options
# It is faster and more predictable for package internals
cat('sys.source demo complete')Jalur Relatif vs Absolut
Menggunakan jalur relatif dalam source() membuat proyek Anda portabel—jalur file ditentukan relatif terhadap direktori kerja saat ini. Jalur absolut berfungsi di mana saja, tetapi akan bermasalah saat proyek dipindahkan. Utamakan jalur relatif dalam alur kerja berbasis proyek.
# Relative path — resolved from getwd()
source('R/helpers.R') # good for projects
source('scripts/utils.R') # subfolder
source('../shared/common.R') # parent folder
# Absolute path — fragile, machine-specific
source('/Users/alice/project/R/helpers.R')
# Check current working directory first:
cat('Working dir:', getwd())
# Best practice: use file.path() for clarity
source(file.path('R', 'helpers.R'))Memuat Beberapa File
Anda dapat memanggil source() beberapa kali untuk memuat sejumlah file pembantu. Pola yang umum adalah memiliki satu titik masuk bergaya setup.R atau _targets.R yang memuat semua modul yang diperlukan dalam urutan yang benar.
# main.R — entry point that loads all modules
source('R/data_loading.R')
source('R/cleaning.R')
source('R/analysis.R')
source('R/plotting.R')
# Or source all .R files in a directory:
r_files <- list.files('R', pattern = '\\.R$', full.names = TRUE)
for (f in r_files) {
source(f)
cat('Loaded:', f, '\n')
}
cat('All modules loaded')Fungsi Pemuatan Skrip dengan chdir
Parameter chdir untuk sementara mengubah direktori kerja menjadi direktori yang berisi file yang dimuat selama file tersebut dijalankan. Ini berguna ketika skrip pembantu menggunakan jalur relatifnya sendiri secara internal.
# Suppose scripts/analysis.R uses source('helpers.R')
# and helpers.R is also in scripts/
# Without chdir: R looks for helpers.R in YOUR working dir
source('scripts/analysis.R') # may fail
# With chdir = TRUE: working dir shifts to scripts/ temporarily
source('scripts/analysis.R', chdir = TRUE) # helpers.R found!
# After source() returns, working dir goes back to original
cat('Working dir restored:', getwd())Memuat Skrip Saat Memulai melalui .Rprofile
File .Rprofile di direktori beranda Anda (atau akar proyek) dijalankan secara otomatis setiap kali R dimulai. Anda dapat menggunakan source() di dalamnya untuk memuat utilitas secara otomatis, menetapkan opsi, atau memasang paket setiap kali sesi dimulai.
# .Rprofile (in ~ or project root):
# source('~/.R/my_utils.R') # load personal helpers
# options(scipen = 999) # no scientific notation
# To open and edit .Rprofile:
file.edit('~/.Rprofile')
# To see where .Rprofile files are looked for:
cat(Sys.getenv('R_PROFILE_USER'))
# Caution: heavy .Rprofile slows R startup
# Keep it minimal — load only what you always need
cat('.Rprofile concept shown')Fungsi Pemuatan Skrip dalam Praktik — Pola Proyek
Pola dunia nyata yang rapi adalah menata proyek dengan folder R/ untuk semua skrip pembantu dan satu file run.R atau main.R yang memuat semuanya. Dengan demikian, proyek mudah direproduksi dan dibagikan.
# Project structure:
# my_project/
# run.R <- entry point
# R/
# 01_load.R <- data loading
# 02_clean.R <- data cleaning
# 03_model.R <- modeling
# 04_report.R <- output
# run.R content:
cat('=== Starting analysis ===\n')
source('R/01_load.R')
source('R/02_clean.R')
source('R/03_model.R')
source('R/04_report.R')
cat('=== Analysis complete ===\n')Pemeriksaan Singkat
Parameter source() mana yang mencegah objek yang dibuat dalam file yang dimuat agar tidak muncul di lingkungan global?
Fungsi Pemuatan Skrip — Inti Pembelajaran
source() adalah cara bawaan R untuk memodularisasi kode:
source('file.R')— memuat dan menjalankan skrip dalam lingkungan globalecho = TRUE— mencetak setiap ekspresi, sangat berguna untuk men-debuglocal = TRUE— menjalankan kode secara terisolasi, tanpa efek samping globalchdir = TRUE— mengalihkan direktori kerja sementara ke lokasi filesys.source()— alternatif tingkat rendah yang digunakan dalam paket- Utamakan jalur relatif dan alur kerja berbasis proyek demi portabilitas
- Gunakan
.Rprofileuntuk memuat pembantu secara otomatis saat R dimulai
# Quick reference
source('R/helpers.R') # basic load
source('R/helpers.R', echo = TRUE) # verbose
source('R/helpers.R', local = TRUE) # isolated
source('scripts/run.R', chdir = TRUE) # local paths
env <- new.env()
sys.source('R/helpers.R', envir = env) # low-level
cat('source() mastered!')Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menggunakan source() untuk Memuat Skrip” gratis?
Ya — teks lengkap “Menggunakan source() untuk Memuat Skrip” 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 “Menggunakan source() untuk Memuat Skrip”?
Jalankan skrip R eksternal dan bagikan kode antarfile dengan source(). 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 1 dari 4.
Berapa lama pelajaran “Menggunakan source() untuk Memuat Skrip” 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