Nesse post vou mostrar como fazer um pacote em R muito, muito rápido. Tirei várias coisas que costumo fazer nos pacotes, com dor no coração, tudo pela velocidade, mantendo só o essencial.
Duas restrições que usei são
- O pacote precisa ficar disponível no GitHub.
- O pacote precisa ter pelo menos uma função.
Essa é a solução que eu acho mais segura e rápida. Você também pode usar o próprio RStudio para criar pacotes ou clonar coisas do github, mas isso pode dar alguns bugs.
Passo 1: Crie um repositório no Github
Clique no link: https://github.com/new
- Escreva o nome do seu pacote. O nome do pacote não pode ter espaços, underline (
_
) nem hífen (-
) nem começar com números. - Tique a opção Initialize this repository with a README.
- Clique em Create repository.
Passo 2: Clonar o repositório
Recomendo clonar repositórios abrindo um terminal e digitando
$ git clone https://github.com/usuario/nomeDoPacote
Você pode clonar de outras formas, inclusive dentro do RStudio. Se você usar o RStudio, saia do projeto e delete o arquivo .RProj
criado automaticamente, pois ele terá metadados inapropriados para criar pacotes.
Passo 3: usar devtools::setup()
- Abra uma nova sessão R em qualquer lugar.
- Rode
devtools::setup("caminho/da/pasta/clonada/nomeDoPacote")
.
Passo 4: Crie sua função
Exemplo:
#' Soma 2
#'
#' Recebe um vetor de números e retorna um vetor de números somando dois
#'
#' @param x vetor de números.
#'
#' @export
soma_2 <- function(x) {
x + 2
}
- Crie a função dentro de um arquivo com extensão
.R
na pastaR
- As informações que começam com
#'
acima da função servem para documentar. Nesse caso,- a primeira linha é o título
- a segunda linha é a descrição
- a parte que começa com
@param
descreve o que é o parâmetro de entrada - a parte que começa com
@export
diz para o pacote que essa função deve estar disponível para o usuário quando ele rodarlibrary(nomeDoPacote)
.
Passo 5: document, commit e push!
- Rode
devtools::document()
. - Commite suas alterações.
- Dê um push!
Se não saba o que é commitar e pushar, veja o artigo do Athos sobre o uso do git e do GitHub.
Passo 6: Instalar o pacote em outra máquina
- Mande o nome do seu usuário do GitHub e o nome do seu pacote para sua migue.
- Peça para ela rodar:
devtools::install_github('usuario/nomeDoPacote')
- Agora ela poderá usar sua função!
library(nomeDoPacote)
soma_2(1:10)
# [1] 3 4 5 6 7 8 9 10 11 12
Você também pode ver o help da função com ?soma_2
:
FIM!
Conclusões
- Agora você não tem desculpa para não empacotar suas soluções em R.
- Esse tutorial é incompleto! Para acessar mais detalhes, veja http://r-pkgs.had.co.nz, elaborado por você sabe quem.
Outras pequenas dicas práticas
- Use sempre
devtools::check()
para checar se seu pacote está 100% bem construído. - Use
devtools::use_package()
para usar funções de outros pacotes. - Sempre use os
::
para chamar as funções e nunca rodelibrary()
ourequire()
dentro de um pacote. - Use
devtools::use_mit_license()
para adicionar um arquivoLICENSE
ao seu pacote. - Use
abjutils::use_pipe()
para poder usar o%>%
nos seus pacotes. - Use
devtools::use_data()
para adicionar dados ao seu pacote. - Use
devtools::use_vignettes()
para escrever um tutorial sobre seu pacote, igual a esse do dplyr, por exemplo.
É isso. Happy coding ;)