Desenvolvendo e publicando pacotes R

Um guia completo para criar, manter e compartilhar seu código R

Aprenda o processo completo de desenvolvimento, documentação, teste, manutenção e publicação de pacotes R. Este guia expandido abrange ferramentas essenciais como devtools, roxygen2, usethis e pkgdown, juntamente com integração contínua, estratégias de design avançadas e dicas de solução de problemas.

Programação
Autor
Afiliação
Data de Publicação

10 de fevereiro de 2024

Data de Modificação

29 de abril de 2025

Palavras-chave

Desenvolvimento de pacotes R, publicar pacotes R, Tutorial do pacote R, criar pacotes R, devtools, roxygen2, pkgdown, integração contínua R

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
usethis::create_package("path/to/your/packageName")

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)
add_numbers <- function(a, b) {
  a + b
}

# Gere documentação
devtools::document()

Testando seu pacote

Configure testes usando o pacote testthat para garantir que seu pacote funcione corretamente.

#| label: setup-tests
usethis::use_testthat()

# Executar testes
devtools::test()

Criando e verificando o pacote

Compile e verifique seu pacote para detectar erros ou avisos.

#| label: build-check
devtools::build()
devtools::check()

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
usethis::use_git()
usethis::use_github()

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")
pkgdown::build_site()

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

Nota

Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.

placeholder

placeholder
Nenhum item correspondente
De volta ao topo

Reuso

Citação

BibTeX
@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}
}
Por favor, cite este trabalho como:
Kassambara, Alboukadel. 2024. “Desenvolvendo e publicando pacotes R.” February 10, 2024. https://www.datanovia.com/pt/learn/programming/r/advanced/developing-and-publishing-r-packages.html.