Usando source() para carregar scripts
Execute scripts R externos e compartilhe código entre arquivos com source().
Usando source() para carregar scripts é uma aula grátis de R Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de R Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de R Academy inclui 4 aulas no total.
Por que usar source()?
À medida que seus projetos em R crescem, manter todo o código em um único arquivo se torna inviável. A função source() permite carregar e executar um script externo de R, dividindo seu trabalho em módulos lógicos e reutilizáveis.
Essa é a base do desenvolvimento organizado em 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)Sintaxe básica de source()
A forma mais simples de source() recebe um caminho de arquivo como único argumento. O arquivo é lido e cada expressão nele é avaliada no ambiente atual, como se você tivesse digitado o código diretamente.
# 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
O parâmetro echo controla se cada expressão do arquivo carregado por source() é exibida no console enquanto é executada. Por padrão, echo = FALSE, mantendo o console limpo. Defini-lo como TRUE é útil para depuração.
# 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 e verbose
Mais dois parâmetros oferecem um controle mais preciso sobre a saída. print.eval controla se os resultados das expressões são exibidos (de modo semelhante ao modo interativo). verbose exibe informações adicionais sobre o próprio processo de carregamento.
# 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 — escopo isolado
Por padrão, source() executa o código no ambiente global, portanto todos os objetos criados aparecem no seu espaço de trabalho. Definir local = TRUE executa o script em um ambiente novo e isolado, mantendo o espaço de trabalho global limpo.
# 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 um carregamento mais seguro
sys.source() é uma alternativa de nível mais baixo que elimina parte da sobrecarga de source(). Ela não altera o diretório de trabalho nem avalia as opções keepSource. É frequentemente usada no desenvolvimento de pacotes e em ferramentas 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')Caminhos relativos vs. absolutos
Usar caminhos relativos em source() torna seu projeto portátil — o caminho do arquivo é resolvido em relação ao diretório de trabalho atual. Caminhos absolutos funcionam em qualquer lugar, mas deixam de funcionar quando você move o projeto. Prefira caminhos relativos em fluxos de trabalho baseados em projetos.
# 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'))Carregamento de vários arquivos
Você pode chamar source() várias vezes para carregar diversos arquivos auxiliares. Um padrão comum é ter um único ponto de entrada no estilo setup.R ou _targets.R que carrega todos os módulos necessários na ordem correta.
# 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() com chdir
O parâmetro chdir altera temporariamente o diretório de trabalho para o diretório que contém o arquivo carregado enquanto ele é executado. Isso é útil quando um script auxiliar usa internamente seus próprios caminhos relativos.
# 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())Carregamento na inicialização por meio de .Rprofile
O arquivo .Rprofile no seu diretório pessoal (ou na raiz do projeto) é executado automaticamente sempre que o R é iniciado. Você pode usar source() nele para carregar utilitários automaticamente, definir opções ou anexar pacotes no início de cada sessão.
# .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() na prática — padrão de projeto
Um padrão prático e organizado é estruturar seu projeto com uma pasta R/ para todos os scripts auxiliares e um único arquivo run.R ou main.R que os carrega. Isso torna o projeto fácil de reproduzir e compartilhar.
# 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')Verificação rápida
Qual parâmetro de source() impede que os objetos criados no arquivo carregado apareçam no ambiente global?
source() — principais conclusões
source() é a forma integrada do R de modularizar o código:
source('file.R')— carrega e executa um script no ambiente globalecho = TRUE— exibe cada expressão (ótimo para depuração)local = TRUE— executa de forma isolada, sem efeitos colaterais globaischdir = TRUE— altera temporariamente o diretório de trabalho para o local do arquivosys.source()— alternativa de baixo nível usada em pacotes- Prefira caminhos relativos e fluxos de trabalho baseados em projetos para obter portabilidade
- Use
.Rprofilepara carregar automaticamente os auxiliares na inicialização do 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!')Aprenda R com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 43
- Aulas
- 159
Perguntas Frequentes
A aula “Usando source() para carregar scripts” é grátis?
Sim — o texto completo de “Usando source() para carregar scripts” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de R Academy, atualize para CoddyKit PRO. O curso de R Academy inclui 4 aulas no total.
O que vou aprender em “Usando source() para carregar scripts”?
Execute scripts R externos e compartilhe código entre arquivos com source(). Você pratica R Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar R Academy?
Nenhuma experiência prévia é necessária. R Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Usando source() para carregar scripts”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de R Academy?
Sim. Cada aula de R Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Usando source() para carregar scripts
- Comentários, estilo e legibilidade
- Diretórios de trabalho e caminhos de arquivos
- Projetos R e gerenciamento do espaço de trabalho