Introdução
Os pacotes R são uma maneira poderosa de agrupar seu código R, dados e documentação em um formato reutilizável. Neste guia abrangente, você aprenderá o fluxo de trabalho completo para criar, documentar, testar, manter e publicar pacotes R. Se você planeja compartilhar seu trabalho no CRAN, GitHub ou outras plataformas, dominar essas técnicas é essencial para contribuir com o ecossistema R.
Configurando seu ambiente de desenvolvimento de pacotes
Antes de começar, certifique-se de ter as ferramentas necessárias instaladas. Os pacotes devtools, usethis e roxygen2 são fundamentais para o desenvolvimento moderno de pacotes.
#| label: install-packaging-tools
install.packages(c("devtools", "usethis", "roxygen2"))
library(devtools)
library(usethis)
library(roxygen2)
Criando uma estrutura de pacote
Use usethis para criar um novo esqueleto de pacote. Este comando configura uma estrutura de diretórios básica com pastas para código R, documentação, testes e muito mais.
#| label: create-package
::create_package("path/to/your/packageName") usethis
Documentando seu pacote com roxygen2
A documentação é fundamental. Use roxygen2 para escrever documentação embutida que é automaticamente convertida em arquivos de ajuda.
#| label: document-example
#' Add Two Numbers
#'
#' This function adds two numeric values.
#'
#' @param a A numeric value.
#' @param b A numeric value.
#' @return The sum of a and b.
#' @examples
#' add_numbers(3, 5)
<- function(a, b) {
add_numbers + b
a
}
# Gere documentação
::document() devtools
Testando seu pacote
Configure testes usando o pacote testthat para garantir que seu pacote funcione corretamente.
#| label: setup-tests
::use_testthat()
usethis
# Executar testes
::test() devtools
Criando e verificando o pacote
Compile e verifique seu pacote para detectar erros ou avisos.
#| label: build-check
::build()
devtools::check() devtools
Publicando seu pacote
Publicação no CRAN
Siga as diretrizes do CRAN e use devtools::release()
para enviar seu pacote para revisão do CRAN.
Compartilhar no GitHub
Como alternativa, publique seu pacote no GitHub para obter atualizações contínuas e contribuições da comunidade.
#| label: publish-github
::use_git()
usethis::use_github() usethis
Manutenção e atualização do seu pacote
Após a publicação, é importante manter seu pacote atualizado:
Controle de versão:
Use o controle de versão semântico para rastrear alterações. Atualize a versão do seu pacote e documente as alterações em um arquivo NEWS.Correções de bugs e melhorias:
Atualize regularmente seu pacote com base no feedback dos usuários e nas alterações nas dependências.Atualizações da documentação:
Certifique-se de que sua documentação permaneça atualizada à medida que seu pacote evolui.
Documentação automatizada e criação de sites
Criar um site para o seu pacote usando pkgdown pode tornar sua documentação mais acessível.
#| label: pkgdown-setup
install.packages("pkgdown")
::build_site() pkgdown
Isso gera um site estático para o seu pacote, facilitando a exploração da documentação e dos exemplos pelos usuários.
Integração contínua (CI) para pacotes R
Configurar pipelines de CI/CD ajuda a manter a qualidade do seu pacote ao longo do tempo. Use ferramentas como GitHub Actions ou Travis CI para executar testes automaticamente e criar seu pacote a cada commit.
Exemplo: fluxo de trabalho do GitHub Actions
Crie um arquivo .github/workflows/R-CMD-check.yaml
com o seguinte conteúdo:
name: R-CMD-check
on: [push, pull_request]
jobs:
R-CMD-check:
runs-on: ubuntu-latest
container:
image: rstudio/r-base:4.1.0
steps:
- uses: actions/checkout@v2
- name: Set up R
uses: r-lib/actions/setup-r@v2
- name: Install dependencies
run: Rscript -e 'install.packages(c("devtools", "roxygen2", "testthat"))'
- name: Check package
run: R CMD check .
Este fluxo de trabalho verifica automaticamente se há erros e avisos no seu pacote a cada solicitação de envio ou retirada.
Design avançado de pacotes
Para projetos mais complexos, considere projetar seu pacote usando os sistemas de objetos S3 ou S4 do R:
Classes S3:
Forneça uma maneira simples e flexível de implementar a programação orientada a objetos no R.Classes S4:
Ofereça definições e validação formais de classes, que são úteis para projetos mais robustos e em grande escala.
Saiba mais sobre esses sistemas em tutoriais dedicados ou na documentação oficial do R.
Armadilhas comuns e solução de problemas
Problemas com a documentação:
Certifique-se de que todas as funções estejam documentadas corretamente com roxygen2 para evitar a perda de arquivos de ajuda.Conflitos de namespace:
Tenha cuidado ao nomear funções e variáveis para evitar conflitos com pacotes existentes.Gerenciamento de dependências:
Atualize regularmente as dependências do seu pacote e garanta a compatibilidade com versões mais recentes do R.Tratamento de erros:
Use o tratamento abrangente de erros e o registro em log dentro do seu pacote para facilitar a depuração e o suporte ao usuário.
Conclusão
Desenvolver e publicar pacotes R é um processo gratificante que permite compartilhar seu código e contribuir com a comunidade R. Seguindo as práticas recomendadas — desde a configuração do ambiente e a documentação do código até o teste, a manutenção e a publicação do pacote —, você pode criar pacotes robustos e reutilizáveis. Este guia abrangente, com seções adicionais sobre documentação automatizada, integração contínua e design avançado de pacotes, fornece todas as ferramentas necessárias para você ter sucesso.
Leitura adicional
Boa programação e aproveite o desenvolvimento e o compartilhamento dos seus pacotes R!
Explore mais artigos
Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.
Reuso
Citação
@online{kassambara2024,
author = {Kassambara, Alboukadel},
title = {Desenvolvendo e publicando pacotes R},
date = {2024-02-10},
url = {https://www.datanovia.com/pt/learn/programming/r/advanced/developing-and-publishing-r-packages.html},
langid = {pt}
}