Skriptien lataaminen source()-funktiolla
Suorittakaa ulkoisia R-skriptejä ja jakakaa koodia tiedostojen välillä source()-funktiolla.
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öönchdir = TRUE— vaihtaa työhakemiston tilapäisesti tiedoston sijaintiinsys.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!')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
- Skriptien lataaminen source()-funktiolla
- Kommentit, tyyli ja luettavuus
- Työhakemistot ja tiedostopolut
- R-projektit ja työtilan hallinta