Artigo escrito por Salvador Netto
A criação de pacotes em R com devtools é uma habilidade essencial para programadores que desejam organizar e compartilhar suas funcionalidades de maneira eficiente. Um pacote bem estruturado não apenas facilita a reutilização do código, mas também promove a colaboração e a manutenção a longo prazo. Neste guia, abordaremos de forma prática como criar pacotes utilizando devtools, seguindo as melhores práticas recomendadas pela comunidade.
O que são Pacotes?
Os pacotes são a principal forma de compartilhar e reutilizar código em R. Eles incluem:
- Funções: Blocos de código que realizam tarefas específicas.
- Documentação: Instruções detalhadas sobre como utilizar as funções.
- Datasets: Conjuntos de dados que podem ser aplicados às funcionalidades do pacote.
Um pacote combina tudo isso, tornando-o fácil de compartilhar com outras pessoas. Por exemplo, em março de 2023, existiam mais de 19.000 pacotes disponíveis no CRAN (Comprehensive R Archive Network), o repositório público de pacotes R. Essa grande variedade é uma das razões do sucesso do R: é provável que alguém já tenha resolvido um problema semelhante ao que você está enfrentando, permitindo que você aproveite o trabalho deles.
Além disso, mesmo que você não tenha a intenção de compartilhar seu código, organizar seu trabalho em um pacote traz benefícios. As convenções de estrutura dos pacotes tornam sua vida mais fácil:
- Economia de tempo: Seguir uma estrutura padrão elimina a necessidade de criar uma organização própria para o projeto.
- Acesso a ferramentas úteis: O uso de convenções dos pacotes permite o aproveitamento de diversas ferramentas gratuitas.
Criando um Pacote com Devtools
Antes de começar, certifique-se de que os seguintes pacotes estão instalados: devtools, usethis, roxygen2, knitr e testthat.
Passo a Passo: Criando o Pacote no RStudio
- Acesse File -> New Project… -> New Directory e escolha R Package using devtools.
- Após criar o projeto, observe a seguinte estrutura gerada:
- R/: Pasta onde serão armazenadas suas funções (
.R
). - man/: Diretório com a documentação das funções.
- DESCRIPTION: Arquivo contendo metadados e dependências do pacote.
- NAMESPACE: Controla quais funções são exportadas e importadas.
- R/: Pasta onde serão armazenadas suas funções (
Adicionando Funções
As funções devem ser criadas dentro da pasta R/. Veja um exemplo de uma função simples:
#' Soma
#'
#' Soma dois números.
#'
#' @param x Um número.
#' @param y Um número.
#' @return A soma dos dois números.
#' @examples
#' Soma(1, 1) # Deve retornar 2
#' Soma(10, 1) # Deve retornar 11
#' @export
Soma <- function(x, y) {
return(x + y)
}
Para tornar a função utilizável por outros usuários, o parâmetro @export
deve ser adicionado. Caso utilize outros pacotes na função, indique com @import nome_pacote.
Após criar a função, gere a documentação executando:
roxygen2::roxygenise()
Criando Datasets
Para adicionar datasets ao seu pacote, use o comando:
usethis::use_data(nome_dataset)
Exemplo:
dados_exemplo <- data.frame(
col1 = 1:10,
col2 = 10:1
)
usethis::use_data(dados_exemplo)
Isso salvará os dados no formato .rda
na pasta data/.
Configuração de Metadados
O arquivo DESCRIPTION contém informações essenciais sobre o pacote, como nome, versão, autor e dependências. Certifique-se de listar pacotes necessários em Depends, Imports ou Suggests.
Testando o Pacote
A validação é fundamental para garantir a funcionalidade do código. O pacote testthat
simplifica essa etapa. Para configurá-lo, use:
usethis::use_testthat()
Isso criará a estrutura de testes no diretório tests/testthat/. Veja um exemplo de teste para a função Soma
:
test_that("Soma corretamente", {
expect_equal(Soma(3, 4), 7) # Verifica se 3 + 4 retorna 7
})
Para executar os testes, utilize:
devtools::test()
Checagem e Publicação
Antes de compartilhar seu pacote, execute uma checagem com:
devtools::check()
Esse comando identificará potenciais erros e garantirá que o pacote está pronto para uso.
Conclusão
Sabemos que criar pacotes em R com devtools pode parecer desafiador inicialmente, mas o processo torna-se intuitivo com a prática. Além de ajudar na organização e reutilização do código, um pacote bem elaborado contribui para a disseminação de conhecimento e facilita colaborações.
Para mais informações sobre a criação de pacotes em R, acesse R Packages.