R Academy · leksjon

Bruke source() til å laste inn skript

Kjør eksterne R-skript og del kode mellom filer med source().

Leksjon 1 av 413 trinn

Bruke source() til å laste inn skript er en gratis leksjon i R Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i R Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i R Academy inneholder totalt 4 leksjoner.

Hvorfor bruke source()?

Etter hvert som R-prosjektene Deres vokser, blir det uhåndterlig å ha all kode i én fil. Funksjonen source() lar Dem laste inn og kjøre en ekstern R-skriptfil, slik at arbeidet kan deles opp i logiske, gjenbrukbare moduler.

Dette er grunnlaget for en organisert R-utvikling.

# 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)

Grunnleggende syntaks for source()

Den enkleste formen av source() tar en filbane som eneste argument. Filen leses, og hvert uttrykk i den evalueres i det gjeldende miljøet, akkurat som om De hadde skrevet koden direkte.

# 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')

Parameteren echo

Parameteren echo styrer om hvert uttrykk fra den innlastede filen skrives ut i konsollen mens det kjøres. Som standard er echo = FALSE, slik at konsollen holdes ryddig. Det er nyttig å sette den til TRUE ved feilsøking.

# 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 og verbose

To andre parametere gir Dem mer detaljert kontroll over utskriften. print.eval styrer om resultatene av uttrykkene skrives ut, på samme måte som i interaktiv modus. verbose skriver ut mer informasjon om selve innlastingsprosessen.

# 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')

Parameteren local – isolert omfang

Som standard kjører source() kode i det globale miljøet, slik at alle opprettede objekter vises i arbeidsområdet. Når De setter local = TRUE, kjøres skriptet i et nytt, isolert miljø, slik at det globale arbeidsområdet holdes ryddig.

# 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() for sikrere innlasting

sys.source() er et alternativ på lavere nivå som unngår noe av kostnaden ved source(). Funksjonen endrer ikke arbeidskatalogen og evaluerer ikke alternativene for keepSource. Den brukes ofte i pakkeutvikling og interne verktøy.

# 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')

Relative og absolutte filbaner

Relative filbaner i source() gjør prosjektet portabelt – filbanen tolkes i forhold til den gjeldende arbeidskatalogen. Absolutte filbaner fungerer overalt, men slutter å fungere når prosjektet flyttes. Foretrekk relative filbaner i prosjektbaserte arbeidsflyter.

# 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'))

Laste inn flere filer

De kan kalle source() flere ganger for å laste inn flere hjelpefiler. Et vanlig mønster er å ha ett enkelt inngangspunkt, for eksempel setup.R eller _targets.R, som laster inn alle nødvendige moduler i riktig rekkefølge.

# 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')

source() med chdir

Parameteren chdir endrer midlertidig arbeidskatalogen til katalogen som inneholder den innlastede filen, mens den kjøres. Dette er nyttig når et hjelpeskript bruker egne relative filbaner internt.

# 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())

Innlasting ved oppstart via .Rprofile

Filen .Rprofile i hjemmekatalogen (eller prosjektroten) kjøres automatisk hver gang R starter. De kan bruke source() i denne filen til å laste inn hjelpefunksjoner, angi alternativer eller koble til pakker automatisk ved starten av hver økt.

# .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')

source() i praksis – prosjektmønster

Et ryddig mønster fra virkeligheten er å organisere prosjektet med en R/-mappe for alle hjelpeskript og én enkelt run.R eller main.R som laster dem inn. Dette gjør prosjektet enkelt å gjenskape og dele.

# 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')

Kort kontroll

Hvilken parameter i source() hindrer at objekter som opprettes i den innlastede filen, vises i det globale miljøet?

source() – viktigste punkter

source() er R sin innebygde måte å modularisere kode på:

  • source('file.R') – laster inn og kjører et skript i det globale miljøet
  • echo = TRUE – skriver ut hvert uttrykk, noe som er nyttig ved feilsøking
  • local = TRUE – kjører isolert, uten globale bivirkninger
  • chdir = TRUE – endrer arbeidskatalogen midlertidig til filens plassering
  • sys.source() – alternativ på lavt nivå som brukes i pakker
  • Foretrekk relative filbaner og prosjektbaserte arbeidsflyter for portabilitet
  • Bruk .Rprofile til å laste inn hjelpefunksjoner automatisk når R starter
# 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!')
Gratis å komme i gang

Lær deg R med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
43
Leksjoner
159

Ofte stilte spørsmål

Er leksjonen «Bruke source() til å laste inn skript» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien R Academy, inkludert «Bruke source() til å laste inn skript», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i R Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Bruke source() til å laste inn skript»?

Kjør eksterne R-skript og del kode mellom filer med source(). Du øver på R Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med R Academy?

Ingen tidligere erfaring er nødvendig. R Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Bruke source() til å laste inn skript»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne R Academy-leksjonen?

Ja. Alle R Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Bruke source() til å laste inn skript
  2. Kommentarer, stil og lesbarhet
  3. Arbeidskataloger og filbaner
  4. R-prosjekter og håndtering av arbeidsområde
← Tilbake til R Academy