R Academy · Aula

Usando source() para carregar scripts

Execute scripts R externos e compartilhe código entre arquivos com source().

Aula 1 de 413 etapas

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 global
  • echo = TRUE — exibe cada expressão (ótimo para depuração)
  • local = TRUE — executa de forma isolada, sem efeitos colaterais globais
  • chdir = TRUE — altera temporariamente o diretório de trabalho para o local do arquivo
  • sys.source() — alternativa de baixo nível usada em pacotes
  • Prefira caminhos relativos e fluxos de trabalho baseados em projetos para obter portabilidade
  • Use .Rprofile para 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!')
Grátis para começar

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

  1. Usando source() para carregar scripts
  2. Comentários, estilo e legibilidade
  3. Diretórios de trabalho e caminhos de arquivos
  4. Projetos R e gerenciamento do espaço de trabalho
← Voltar para R Academy