Criando projetos, manipulando arquivos e organizando estruturas no R
Pacotes:{fs},{usethis}e{here}
Organizar projetos de análise de dados é um desafio comum para quem está começando e até para quem já tem experiência em programação com R. Quantas vezes você já se deparou com códigos que funcionavam perfeitamente no seu computador, mas quebravam quando compartilhados com colegas? Ou passou horas ajustando caminhos de arquivos porque mudou a estrutura de pastas? A boa notícia é que existem pacotes que resolvem esses problemas de forma definitiva
Este repositório contém um guia prático e completo desenvolvido para a comunidade R-Ladies Goiânia, focado em três pilares essenciais para organização e gerenciamento de projetos em R:
{usethis}- Criação de projetos reprodutíveis e configuração de infraestrutura{fs}- Manipulação segura e multiplataforma de arquivos e diretórios{here}- Garantia de caminhos consistentes e relativos ao projeto
- Ensinar boas práticas de organização de projetos em R
- Demonstrar o uso de ferramentas modernas para gerenciamento de arquivos
- Promover reprodutibilidade e portabilidade de código
- Eliminar o uso de
setwd()e caminhos absolutos
- R (versão ≥ 4.0.0)
- RStudio (recomendado)
- Pacotes necessários:
install.packages(c("usethis", "fs", "here", "quarto"))?????????????????????
-
Clone ou baixe este repositório
git clone https://github.com/JenniferLopes/tutorial_rladies_goiania.git
-
Abra o projeto no RStudio
- Clique duas vezes no arquivo
.Rproj
- Clique duas vezes no arquivo
-
Renderize o documento
quarto::quarto_render("index.qmd")
-
Siga os exemplos interativamente
- Execute cada chunk de código sequencialmente
- Pratique modificando os exemplos
Aprenda a criar projetos estruturados e configurar infraestrutura:
library(usethis)
# Criar novo projeto
create_project("meu_projeto")
# Inicializar Git
use_git()
# Criar repositório no GitHub
use_github()Domine operações de arquivos de forma segura e consistente:
library(fs)
# Criar estrutura de pastas
dir_create(here("data", c("raw", "clean")))
dir_create(here(c("scripts", "outputs", "figures")))
# Listar arquivos
dir_ls(here("data"))
# Copiar e mover
file_copy("origem.csv", "destino.csv")
file_move("arquivo.txt", "nova_pasta/arquivo.txt")Garanta portabilidade do seu código:
library(here)
# Sempre use here() para caminhos
dados <- read.csv(here("data", "raw", "dados.csv"))
# Funciona em qualquer sistema operacional!
ggsave(here("figures", "grafico.png"))| Função | Descrição | Exemplo |
|---|---|---|
dir_create() |
Cria diretórios | dir_create("data/raw") |
dir_ls() |
Lista conteúdo | dir_ls("data", glob = "*.csv") |
dir_tree() |
Visualiza estrutura | dir_tree(here()) |
file_create() |
Cria arquivos | file_create("script.R") |
file_copy() |
Copia arquivos | file_copy("a.txt", "b.txt") |
file_move() |
Move/renomeia | file_move("old.R", "new.R") |
file_delete() |
Deleta arquivos | file_delete("temp.txt") |
file_info() |
Informações detalhadas | file_info("data.csv") |
# NÃO FAÇA ISSO
setwd("C:/Users/MeuNome/Documents/projeto")
dados <- read.csv("../data/arquivo.csv")Problemas:
- Não funciona em outros computadores
- Quebra com mudança de estrutura de pastas
- Dificulta colaboração
# FAÇA ISSO
library(here)
library(fs)
dados <- read.csv(here("data", "arquivo.csv"))
file_copy(
here("data", "raw", "dados.xlsx"),
here("data", "clean", "dados_processados.csv"))Vantagens:
- Funciona em qualquer máquina
- Multiplataforma (Windows, Mac, Linux)
- Código reprodutível
- Facilita colaboração
meu_projeto/
├── meu_projeto.Rproj # Arquivo de projeto
├── README.md # Documentação
├── .gitignore # Arquivos ignorados pelo Git
├── data/
│ ├── raw/ # Dados originais (nunca modificar!)
│ └── clean/ # Dados processados
├── scripts/
│ ├── 01-import.R # Importação de dados
│ ├── 02-clean.R # Limpeza e transformação
│ └── 03-analyze.R # Análises
├── outputs/ # Resultados, tabelas
├── figures/ # Gráficos exportados
└── reports/ # Relatórios (Rmd, qmd)
Use esta função para criar projetos padronizados:
criar_projeto_padrao <- function(nome) {
# Criar projeto
usethis::create_project(nome)
# Estrutura de pastas
fs::dir_create(here::here("data", c("raw", "clean")))
fs::dir_create(here::here(c("scripts", "outputs", "figures", "reports")))
# Scripts básicos
fs::file_create(here::here("scripts", c(
"01-import.R",
"02-clean.R",
"03-analyze.R"
)))
# Documentação
usethis::use_readme_md()
# Git
usethis::use_git()
message("✅ Projeto criado com sucesso!")
}
# Usar:
criar_projeto_padrao("minha_analise")- {usethis}: https://usethis.r-lib.org/
- {fs}: https://fs.r-lib.org/
- {here}: https://here.r-lib.org/
- {renv} - Gerenciamento de dependências: https://rstudio.github.io/renv/
- {targets} - Pipelines de análise: https://docs.ropensci.org/targets/
Contribuições são bem-vindas! Se você encontrou um erro ou tem sugestões de melhoria:
- Abra uma issue descrevendo o problema/sugestão
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'Adiciona nova feature') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
Jennifer Luz Lopes
Engenheira Agrônoma | Doutora em Melhoramento Genético de Plantas
Este projeto está sob a licença MIT.
- R-Ladies Global - Por promover diversidade na comunidade R
- R-Ladies Goiânia - Pela oportunidade de compartilhar conhecimento
- Posit/RStudio - Pelas ferramentas incríveis que facilitam nosso trabalho