R Academy · Oppitunti

Skriptien lataaminen source()-funktiolla

Suorittakaa ulkoisia R-skriptejä ja jakakaa koodia tiedostojen välillä source()-funktiolla.

Oppitunti 1/413 vaihetta

Skriptien lataaminen source()-funktiolla on ilmainen R Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu R Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. R Academy-kurssilla on yhteensä 4 oppituntia.

Miksi source()-funktiota käytetään?

R-projektien kasvaessa kaiken koodin pitäminen yhdessä tiedostossa käy hallitsemattomaksi. source()-funktion avulla voitte ladata ja suorittaa ulkoisen R-komentotiedoston sekä jakaa työn loogisiin, uudelleenkäytettäviin moduuleihin.

Tämä on järjestelmällisen R-kehityksen perusta.

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

source()-funktion perussyntaksi

source()-funktion yksinkertaisin muoto saa ainoana argumenttinaan tiedostopolun. Tiedosto luetaan ja jokainen sen lauseke arvioidaan nykyisessä ympäristössä aivan kuin olisitte kirjoittaneet koodin suoraan siihen.

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

echo-parametri

echo-parametri määrittää, tulostetaanko jokainen lähdetiedostosta suoritettava lauseke konsoliin suorituksen aikana. Oletusarvoisesti echo = FALSE, joten konsoli pysyy siistinä. Asetuksen TRUE käyttäminen on hyödyllistä virheenkorjauksessa.

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

Kaksi muuta parametria antavat tarkemman tulosteen hallinnan. print.eval määrittää, tulostetaanko lausekkeiden tulokset (samankaltaisesti kuin vuorovaikutteisessa tilassa). verbose tulostaa lisätietoja itse lähdekoodin latausprosessista.

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

local-parametri — eristetty laajuus

Oletusarvoisesti source() suorittaa koodin globaalissa ympäristössä, joten kaikki luodut objektit ilmestyvät työtilaasi. Asetus local = TRUE suorittaa komentosarjan uudessa, eristetyssä ympäristössä ja pitää globaalin työtilasi siistinä.

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

sys.source() on alemman tason vaihtoehto, joka ohittaa osan source()-funktion ylimääräisestä käsittelystä. Se ei muuta työhakemistoa eikä käsittele keepSource-asetuksia. Sitä käytetään usein pakettien kehityksessä ja sisäisissä työkaluissa.

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

Suhteelliset ja absoluuttiset polut

Suhteellisten polkujen käyttäminen source()-funktiossa tekee projektista siirrettävän — tiedostopolku ratkaistaan nykyiseen työhakemistoon nähden. Absoluuttiset polut toimivat kaikkialla, mutta lakkaavat toimimasta, kun projekti siirretään. Suosikaa suhteellisia polkuja projektipohjaisissa työnkuluissa.

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

Useiden tiedostojen lataaminen

Voitte kutsua source()-funktiota useita kertoja useiden aputiedostojen lataamiseksi. Yleinen käytäntö on käyttää yhtä setup.R- tai _targets.R-tyyppistä käynnistystiedostoa, joka lataa kaikki tarvittavat moduulit oikeassa järjestyksessä.

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

chdir-parametri vaihtaa työhakemiston suorituksen ajaksi tilapäisesti lähdetiedoston sisältävään hakemistoon. Tästä on hyötyä, kun apukomentosarja käyttää sisäisesti omia suhteellisia polkujaan.

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

Käynnistyksen aikainen lataaminen .Rprofilen avulla

Kotihakemistossa (tai projektin juuressa) oleva .Rprofile-tiedosto suoritetaan automaattisesti aina, kun R käynnistyy. Voitte käyttää sen sisällä source()-funktiota apuohjelmien automaattiseen lataamiseen, asetusten määrittämiseen tai pakettien liittämiseen jokaisen istunnon alussa.

# .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() käytännössä — projektirakenne

Selkeä käytännön rakenne on järjestää projekti niin, että kaikki apukomentosarjat ovat R/-kansiossa ja yksi run.R- tai main.R-tiedosto lataa ne source()-funktiolla. Näin projekti on helppo toistaa ja jakaa.

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

Pikatarkistus

Mikä source()-funktion parametri estää ladatussa tiedostossa luotujen objektien ilmestymisen globaaliin ympäristöön?

source() — tärkeimmät asiat

source() on R:n sisäänrakennettu tapa modularisoida koodia:

  • source('file.R') — lataa komentosarjan ja suorittaa sen globaalissa ympäristössä
  • echo = TRUE — tulostaa jokaisen lausekkeen (erinomainen virheenkorjauksessa)
  • local = TRUE — suorittaa komentosarjan eristetysti ilman sivuvaikutuksia globaaliin ympäristöön
  • chdir = TRUE — vaihtaa työhakemiston tilapäisesti tiedoston sijaintiin
  • sys.source() — paketeissa käytetty alemman tason vaihtoehto
  • Suosikaa siirrettävyyden vuoksi suhteellisia polkuja ja projektipohjaisia työnkulkuja
  • Käyttäkää .Rprofile-tiedostoa apuohjelmien automaattiseen lataamiseen R:n käynnistyessä
# 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!')
Aloita maksutta

Opi R tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
43
Oppitunnit
159

Usein kysytyt kysymykset

Onko oppitunti ”Skriptien lataaminen source()-funktiolla” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa R Academy-oppimispolun 3 oppituntia, myös oppitunnin “Skriptien lataaminen source()-funktiolla”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. R Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Skriptien lataaminen source()-funktiolla”?

Suorittakaa ulkoisia R-skriptejä ja jakakaa koodia tiedostojen välillä source()-funktiolla. Harjoittelet R Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni R Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin R Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Skriptien lataaminen source()-funktiolla”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä R Academy-oppitunnilla?

Kyllä. Jokainen R Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Skriptien lataaminen source()-funktiolla
  2. Kommentit, tyyli ja luettavuus
  3. Työhakemistot ja tiedostopolut
  4. R-projektit ja työtilan hallinta
← Takaisin: R Academy