Uso de source() para cargar scripts
Ejecute scripts externos de R y comparta código entre archivos con source().
Uso de source() para cargar scripts es una lección gratuita de R Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de R Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de R Academy incluye 4 lecciones en total.
¿Por qué usar source()?
A medida que crecen sus proyectos de R, mantener todo el código en un solo archivo se vuelve inmanejable. La función source() permite cargar y ejecutar un archivo de script externo de R, separando el trabajo en módulos lógicos y reutilizables.
Esta es la base de un desarrollo organizado en R.
# 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)Sintaxis básica de source()
La forma más sencilla de source() recibe una ruta de archivo como único argumento. El archivo se lee y cada expresión que contiene se evalúa en el entorno actual, como si hubiera escrito el código directamente.
# 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')Parámetro echo
El parámetro echo controla si cada expresión del archivo cargado mediante source() se muestra en la consola al ejecutarse. De forma predeterminada, echo = FALSE mantiene limpia la consola. Establecerlo en TRUE resulta útil para depurar.
# 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 y verbose
Otros dos parámetros permiten controlar con mayor precisión la salida. print.eval controla si se muestran los resultados de las expresiones, de forma similar al modo interactivo. verbose muestra información adicional sobre el propio proceso de carga.
# 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')Parámetro local: ámbito aislado
De forma predeterminada, source() ejecuta el código en el entorno global, por lo que todos los objetos creados aparecen en el espacio de trabajo. Establecer local = TRUE ejecuta el script en un entorno nuevo y aislado, y mantiene limpio el espacio de trabajo global.
# 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() para una carga más segura
sys.source() es una alternativa de nivel inferior que evita parte de la sobrecarga de source(). No cambia el directorio de trabajo ni evalúa las opciones de keepSource. Se usa a menudo en el desarrollo de paquetes y en herramientas internas.
# 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')Rutas relativas frente a absolutas
Usar rutas relativas en source() hace que su proyecto sea portable: la ruta del archivo se resuelve con respecto al directorio de trabajo actual. Las rutas absolutas funcionan en cualquier ubicación, pero dejan de funcionar al mover el proyecto. Prefiera las rutas relativas en flujos de trabajo basados en proyectos.
# 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'))Cargar varios archivos
Puede llamar a source() varias veces para cargar distintos archivos auxiliares. Un patrón habitual consiste en tener un único punto de entrada, como setup.R o _targets.R, que cargue todos los módulos necesarios en el orden correcto.
# 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() con chdir
El parámetro chdir cambia temporalmente el directorio de trabajo al directorio que contiene el archivo cargado mediante source() mientras este se ejecuta. Resulta útil cuando un script auxiliar utiliza internamente sus propias rutas relativas.
# 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())Cargar al iniciar mediante .Rprofile
El archivo .Rprofile de su directorio personal (o de la raíz del proyecto) se ejecuta automáticamente cada vez que se inicia R. Puede usar source() en él para cargar utilidades, establecer opciones o adjuntar paquetes automáticamente al iniciar cada sesión.
# .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() en la práctica: patrón de proyecto
Un patrón claro y habitual en proyectos reales consiste en organizar el proyecto con una carpeta R/ para todos los scripts auxiliares y un único archivo run.R o main.R que los cargue mediante source(). Esto facilita reproducir y compartir el proyecto.
# 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')Comprobación rápida
¿Qué parámetro de source() impide que los objetos creados en el archivo cargado aparezcan en el entorno global?
source(): conclusiones clave
source() es la forma integrada de R de modularizar el código:
source('file.R'): carga y ejecuta un script en el entorno globalecho = TRUE: muestra cada expresión, lo que resulta muy útil para depurarlocal = TRUE: ejecuta el código de forma aislada, sin efectos secundarios globaleschdir = TRUE: cambia temporalmente el directorio de trabajo a la ubicación del archivosys.source(): alternativa de bajo nivel utilizada en paquetes- Prefiera las rutas relativas y los flujos de trabajo basados en proyectos para lograr portabilidad
- Use
.Rprofilepara cargar automáticamente archivos auxiliares al iniciar R
# 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!')Aprende R con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 43
- Lecciones
- 159
Preguntas frecuentes
¿La lección «Uso de source() para cargar scripts» es gratis?
Sí — el texto completo de «Uso de source() para cargar scripts» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de R Academy, actualiza a CoddyKit PRO. El curso de R Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Uso de source() para cargar scripts»?
Ejecute scripts externos de R y comparta código entre archivos con source(). Practicas R Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar R Academy?
No se requiere experiencia previa. R Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Uso de source() para cargar scripts»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de R Academy?
Sí. Cada lección de R Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Uso de source() para cargar scripts
- Comentarios, estilo y legibilidad
- Directorios de trabajo y rutas de archivos
- Proyectos de R y gestión del espacio de trabajo