Sei sulla pagina 1di 106

Meu primeiro pacote no R

Mariana Ragassi Urbano


mrurbanouel@gmail.com

Rodrigo Rossetto Pescim


rrpescim@gmail.com

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

1 / 106

Conteudo
Introducao
Por que criar um pacote no R ?
Instalacao do R
Instalacao do RStudio
Criacao de um pacote usando o RStudio
Sites interessantes
Consideracoes finais
Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

2 / 106

Introducao
R e uma linguagem e um ambiente de desenvolvimento integrado,
livre e gratuito
Foi criado por Ross Ihaka e Robert Gentleman em 1993
Desde entao, tem sido desenvolvido por um esforco colaborativo de
usuarios em varios locais do mundo
O codigo fonte do R esta disponvel sob a licenca GNU GPL e as
versoes binarias pre-compiladas sao fornecidas para varios sistemas
operacionais como
Windows
Macintosh
Unix/Linux

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

3 / 106

Pode ser obtido no site http://cran.r-project.org/


O R disponibiliza recursos para varios tipos de analises
Estatstica descritiva: medidas de posicao, dispersao, tabelas e graficos,
etc
Modelos lineares, nao lineares, generalizados: estimacao dos
parametros, resduos, metodos de diagn
ostico, etc
Analise multivariada: Analise de componentes principais, clusters,
fatorial, etc

Os recursos disponveis no R para a analise dos dados estao


organizados na forma de pacotes (packages)
Os pacotes do R sao bibliotecas com conjunto de funcoes especficas
Alem de funcoes, os pacotes podem conter conjuntos de dados

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

4 / 106

Por exemplo: o pacote UScensus2010 contem essencialmente varios


conjuntos de dados sobre o censo dos Estados Unidos de 2010, com
algumas funcoes auxiliares
Assim, a capacidade do R e estendida por meio de pacotes
desenvolvidos pelos seus pr
oprios usuarios
Quando o R e instalado, ele vem acompanhado de alguns pacotes
basicos, como por exemplo, base, stats, dentre outros
O objetivo deste minicurso e ensinar o passo a passo da construcao de
um pacote do R

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

5 / 106

Por que criar um pacote no R ?

Se uma ou mais func


oes sao desenvolvidas a partir de:
Monografia
Dissertacao
Tese
Artigos ou outros tipos de trabalho

E o objetivo e difundir a pesquisa


Uma alternativa e criar um pacote no R com funcoes especficas, e
disponibiliza-lo no CRAN para que outros usuarios possam utilizar de
forma mais facil a nova metodologia proposta

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

6 / 106

No R e possvel programar as pr
oprias func
oes, alem de gerar uma
documentacao para integrar c
odigos em C, C++ ou Fortran nessas
funcoes, e criar pacotes que podem ser facilmente instalados e
distribudos
Alem das funcoes, podem ser includos conjuntos de dados e exemplos
sobre como usar as func
oes presentes no pacote
possvel que o mantenedor do pacote faca a qualquer momento
E
modificacoes e atualizac
oes no pacote
Se o usuario nao tem o objetivo de disponibilizar as funcoes, ele
tambem pode criar um pacote para que suas funcoes fiquem
organizadas devido `a estrutura geral de um pacote

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

7 / 106

Instalacao do R

O software R pode ser obtido no site http://cran.r-project.org/

Disponvel para os sistemas operacionais - Linux, Mac e Windows


A versao mais atual disponvel e a R. 3.3.2
Na instalacao do R no sistema operacional Windows, existem as
versoes para 32-bit e 64-bit
Apos o download, o R deve ser instalado

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

8 / 106

RStudio
Quando o objetivo e entrar com dados, ou programar uma funcao,
isso pode ser realizado de forma direta no software R
Porem se as funcoes forem programadas direto no R, nao sera
possvel edita-las, e nem executa-las novamente
Uma alternativa e programar as func
oes em um editor proprio para o
software R
O R tem um editor pr
oprio e muito simples
Outros editores do R com mais recursos foram desenvolvidos, como
por exemplo
tinn-R
RStudio

Neste minicurso sera utilizado o RStudio, pois ele possui ferramentas


mais acessveis para a construcao dos pacotes
Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

9 / 106

Instalacao do RStudio

Diferentemente do R em que todas as vers


oes sao gratuitas
O RStudio disponibiliza vers
oes gratuitas e vers
oes pagas
A construcao de um pacote pode ser realizada utilizando-se a versao
gratuita do software
A versao mais atual do RStudio Desktop e a 1.0.44
Essa versao pode ser obtida no site
http://www.rstudio.com/products/rstudio/download
Apos o download o RStudio deve ser instalado

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

10 / 106

Pacotes no CRAN
No site http://cran.r-project.org/, clicando-se em Packages ate o dia 08/12/2016 as 08:00 - 9202 pacotes disponveis
Clicando-se em Table of available packages, sorted by name ou
em Table of available packages, sorted by date of publication ira
aparecer a lista dos pacotes disponveis
Clicando-se no pacote EpiModel por exemplo, encontra-se o ttulo e
uma breve descricao das funcionalidades do pacote e uma parte com
os downloads disponveis
Um dos arquivos e o EpiModel 1.2.7.tar.gz

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

11 / 106

Como criar uma funcao no R ?

Um pacote do R geralmente e formado por:


Um conjunto de func
oes
Conjuntos de dados
Informac
oes sobre como usar o pacote, etc ...

Descompactando-se o arquivo EpiModel 1.2.7.tar.gz


Na pasta R podem ser encontradas todas as funcoes disponibilizadas
pelo pacote EpiModel

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

12 / 106

No R sao disponibilizadas muitas func


oes, como por exemplo funcoes
para:
Obter a media de uma variavel do conjunto de dados - mean()
Obter o desvio padrao de uma variavel do conjunto de dados - sd(),
dentre outras func
oes

Alem do usuario poder usar as func


oes ja disponveis no R, e possvel
programar suas proprias func
oes

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

13 / 106

Para criar uma funcao deve-se utilizar o comando function, e a estrutura


function(arglist)
expr return(value)
arglist - Empty or one or more name or name=expression terms
expr - An expression
value - An expression
Mais detalhes sobre as definic
oes de func
oes podem ser obtidos em
https://stat.ethz.ch/R-manual/R-devel/
library/base/html/function.html

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

14 / 106

Exemplo de uma funcao

Para criar uma funcao que realiza a soma dos elementos x e y


Se x = 1 e y = 3, ao entrar no R com os valores de x e y e solicitar a
soma dos elementos usando a funcao sumXY o resultado sera:

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

15 / 106

Uma nova funcao pode ser criada incluindo funcoes ja existentes no


R, ou outras funcoes criadas pelo pr
oprio usuario
Exemplo: O objetivo e calcular a soma dos elementos de x e y menos
a media dos valores de z, em que z = 1, 4 e 7
z<-c(1,4,7)
MediaZ<-mean(z)
SomaMenosMedia<-function(x,y){
return((x+y)-MediaZ)}
SomaMenosMedia(x,y)
0

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

16 / 106

Se a media nao tivesse uma funcao pre-definida, poderia ser criada uma
funcao para a media
Media<-function(z){
return(sum(z)/length(z))}
E esta function poderia ser usada dentro de outra function
SomaMenosMedia<-function(x,y){
return((x+y)-Media(z))}
SomaMenosMedia(x,y)
0

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

17 / 106

Pacotes necessarios para a criacao de um pacote usando o


RStudio

O professor Hadley Wickham da Rice University - Texas e o autor do


livro R Packages - Organize, test, document, and share your
code
Link para o conte
udo do livro http://r-pkgs.had.co.nz/intro.html
Ele desenvolveu junto com outros colaboradores, dois pacotes que
auxiliam o usuario na construcao de um pacote
devtools
roxygen2

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

18 / 106

Pacote devtools
Instalar o pacote devtools: Tools to Make Developing R
Packages Easier
Esse pacote foi elaborado com o objetivo de tornar o desenvolvimento
de um novo pacote o mais simples possvel
Segundo o autor, ele e os demais colaboradores encapsularam as
melhores praticas de desenvolvimento de pacotes que aprenderam ao
longo do tempo
cometer
Utilizando o pacote devtools, torna-se mais facil NAO
possveis erros
Dessa forma, o autor pode focar no conte
udo do pacote (funcoes,
exemplos, conjuntos de dados), e nao no desenvolvimento da
estrutura do pacote

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

19 / 106

Pacote roxygen2

Instalar o pacote roxygen2: In-Source Documentation for R


Esse pacote foi elaborado com o objetivo de tornar mais facil a
documentacao
Do pacote
Das func
oes
Dos conjuntos de dados

Os detalhes sobre o uso desse pacote serao vistos na criacao da


documentacao do pacote

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

20 / 106

Se o sistema operacional for o Windows - Instalar o Rtools


O Rtools e um aplicativo com varios recursos para construir pacotes
no R se o sistema operacional usado for o Windows
O download do Rtools pode ser feito no site
http://cran.r-project.org/bin/windows/Rtools/
No site existem varias vers
oes do Rtools, e a versao a ser escolhida ira
depender da versao do software R instalada no computador
Por exemplo, se a versao do R a ser utilizada for a versao R 3.3.2
As versoes compatveis do Rtools com essa versao do R sao
Rtools33.exe para R 3.2.x ate R 3.3.x e Rtools34.exe para R 3.3.x

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

21 / 106

Para verificar se o usuario tem todas as ferramentas instaladas e


funcionando para construir um pacote
Digitar no R os comandos library(devtools) e has_devel
library(devtools)
has_devel()
"C:/PROGRA~1/R/R-32~1.0/bin/i386/R" \
--no-site-file --no-environ --no-save
--no-restore CMD SHLIB foo.c

gcc -m32 -I"C:/PROGRA~1/R/R-32~1.0/include" -DNDEBUG


-I"d:
gcc -m32 -shared -s -static-libgcc -o foo.dll tmp.def foo.o -L
[1] TRUE

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

22 / 106

A partir desses comandos sera retornado um c


odigo, e no final do
codigo tera TRUE ou FALSE
Se for TRUE, o usuario pode prosseguir com a construcao do pacote
Se for FALSE, o usuario deve verificar a mensagem para identificar o
que esta faltando

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

23 / 106

Nome do pacote
Antes de iniciar a construcao de um pacote, e necessario decidir qual
sera o seu nome
O nome do pacote pode ter letras, n
umeros e ponto (.)
Deve comecar sempre com uma letra e nao pode terminar com ponto
(.)
Outros smbolos como por exemplo @ e
do pacote

nao sao permitidos no nome

Apesar de ser permitido ponto (.) no nome do pacote, nao e


recomendavel usa-lo, pois pode haver conflito em relacao `a extensao
do arquivo por exemplo

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

24 / 106

Exemplos de nomes de pacotes

MeuPacote - correto
Meu.Pacote - correto
Meu1.Pacote - correto
1Pacote - Errado
1Pacote.- Errado
O nome do nosso pacote sera myfisrtpackage

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

25 / 106

Passo a passo no RStudio para a construcao de um pacote

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

26 / 106

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

27 / 106

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

28 / 106

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

29 / 106

A partir desses passos um esqueleto do pacote com as pastas e


arquivos basicos sera criado

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

30 / 106

Outras alternativas para iniciar a construcao de um pacote

A partir do comando
devtools::create("path/to/package/pkgname")
Sera criada a estrutura de um pacote, igual `a estrutura do pacote no passo
a passo descrita anteriormente
Outro comando que tambem pode ser usado e o
package.skeleton()
Mas nao e recomendavel usar esse comando pois ele ira criar arquivos que
posteriormente poderao ser apagados ou modificados

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

31 / 106

Pasta R

Essa e a pasta mais importante, pois todas as funcoes disponibilizadas


pelo pacote deverao estar na pasta R
No pacote pode existir uma, ou mais func
oes
No caso de varias func
oes, os extremos devem ser evitados:
Salvar todas as func
oes em um s
o arquivo
Salvar uma funcao por arquivo - a nao ser que o codigo da funcao seja
muito extenso ou tenha uma documentacao muito extensa

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

32 / 106

Exemplo de uma funcao para ser salva na pasta R

A funcao sera criada com o objetivo de elevar um n


umero ao quadrado
square <- function(x){
return(x^2) }
Essa sera a u
nica funcao disponvel do pacote
O nome do arquivo com essa funcao, precisa ter a extensao .R, por
exemplo fc1.R
Como so ha uma funcao, o nome do arquivo pode ter o mesmo nome
da funcao, ou outro nome qualquer

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

33 / 106

Formatacao da funcao

Uma boa formatacao da funcao e como usar pontuacao correta


possvel ficar sem, mas com certeza sera mais facil de ler, e
E
consequentemente de entender a funcao
Uma boa formatacao e importante, pois a funcao pode ter um u
nico
autor, porem milhares de leitores
Se a funcao esta sendo desenvolvido com outros autores e importante
ter uma paronizacao
N
umero de espacos
N
umero de letras em cada linha, etc

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

34 / 106

Pacote formatR do autor Yihui Xie

Esse pacote foi desenvolvido com o objetivo de auxiliar no layout


do script feito no R
Essa formatacao pode ser feita nos arquivos ou funcoes
separadamente: tidy_source ()
Ou em todos os arquivos salvos na pasta R:
tidy_dir ("R")
Pode ser usado junto com o pacote shiny: tidy_app ()
Mais informacoes sobre o pacote formatR podem ser encontradas em
http://yihui.name/formatR/

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

35 / 106

Nomes das variaveis e das funcoes


Os nomes das variaveis e das func
oes devem preverivelmente ser com
letra min
uscula
Sempre que possvel deve-se evitar o uso de nomes de funcoes e
variaveis ja existentes
Pois isso podera causar confusao nos leitores do seu script
Exemplos
T <- FALSE
c <- 10
mean <- function(x) {
sum(x)
}

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

36 / 106

Arquivo DESCRIPTION

Esse arquivo e muito importante, pois por meio dele e possvel saber
para que serve o pacote
quem pode usar o pacote
com quem entrar em contato no caso de algum problema que o usuario
encontrar, ou para esclarecer d
uvidas sobre o pacote

As informacoes do arquivo DESCRIPTION de um pacote estarao no


CRAN ao se clicar no nome do pacote, e na primeira pagina do
manual em formato .pdf

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

37 / 106

As informacoes obrigatorias que o arquivo DESCRIPTION deve ter sao

Package: myfirstpackage
Type: Package
Title: What the Package Does (Title Case)
Version: 0.1.0
Date: 2016-12-08
Author: Who wrote it
Maintainer: Who to complain to <yourfault@somewhere.net>
Description: More about what it does
(maybe more than one line)
License: What license is it under?
LazyData: TRUE

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

38 / 106

Topicos Title e Description do arquivo


DESCRIPTION

Title
Descricao de uma linha sobre o pacote
Nao deve terminar com .
Recomenda-se usar no maximo 65 caracteres

Description
Uma descricao mais detalhada do que o ttulo do pacote
S
o pode ter um paragrafo
Cada linha deve ter no maximo 80 caracteres

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

39 / 106

Topicos Author e Maintainer do arquivo


DESCRIPTION

O pacote deve ter pelo menos um autor (Author) e um mantenedor


(Maintainer) (geralmente a mesma pessoa), com um endereco de
e-mail valido
Esses itens sao a base para fazer a citacao do pacote
Os nomes listadas no t
opico Author irao aparecer na citacao
automatica do pacote
Mais para frente serao vistos os detalhes para realizar a citacao de um
pacote

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

40 / 106

Topicos URL e BugReports do arquivo DESCRIPTION


Alem do e-mail, podem ser disponibilizadas URLs com enderecos de
paginas pessoais, blogs, para que o usuario do pacote possa tirar
d
uvidas
Essas URls devem ser listadas no t
opico URL
No caso de mais de uma URL, elas devem ser separadas por ,
O autor tambem pode colocar o endereco de uma pagina especfica
para que o usuario relate possveis bugs do pacote
Essa pagina deve ser listada no t
opico BugReports
Exemplo dos topicos URL e BugReports do arquivo DESCRIPTION
do pacote knitr
URL: http://yihui.name/knitr/
BugReports: https://github.com/yihui/knitr/issues
Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

41 / 106

Package: myfirstpackage
Type: Package
Title: My first R package
Version: 0.1.0
Date: 2016-12-08
Author: Mariana Ragassi Urbano and Rodrigo Rossetto Pescim
Maintainer: Mariana Ragassi Urbano <mrurbanouel@gmail.com>
Description: Some important functions and datasets
License: GPL-2
LazyData: TRUE

Mais detalhes sobre a licenca do pacote


https://svn.r-project.org/R/trunk/share/licenses/license.db

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

42 / 106

Compilacao e instalacao do pacote


Com a funcao square salva no arquivo fc1.R na pasta R, e o arquivo
DESCRIPTION editado
possvel compilar e instalar o pacote, clicando-se em Build and
E
Reload

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

43 / 106

Apos a compilacao e instalacao, o pacote sera carregado


automaticamente
library(myfirstpackage)
Com o pacote carregado, e possvel usar a funcao disponibilizada por
ele
square(9)
81

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

44 / 106

Documentacao do pacote
Clicando-se em

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

45 / 106

Ira aparecer

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

46 / 106

Sera necessario criar uma documentacao para o pacote


Caso contario, a pessoa que for utiliza-lo nao sabera para que servem
as funcoes, e os conjuntos de dados disponibilizadas pelo pacote
Existem varias formas de criar a documentacao para o pacote
Uma das formas e usando o pacote roxygen2

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

47 / 106

Pasta man
Antes de documentar a funcao square salva em fc1.R
Clicando-se na pasta man nao havera nenhum arquivo

Mais para frente iremos retornar com mais detalhes sobre a pasta man
Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

48 / 106

Documentacao para a funcao square salva no arquivo


fc1.R

Localizar na pasta R o arquivo fc1.R


Todas as sentencas da documentacao feitas usando-se o pacote
roxygen2 sempre comecam com #0
O primeiro paragrafo deve ter o ttulo da documentacao (uma linha)
e terminar com .
No segundo paragrafo uma descricao de forma sucinta sobre o que a
funcao faz
O terceiro e os demais paragrafos dao mais detalhes e exemplos de
como usar a funcao

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

49 / 106

A descricao da funcao deve ter pelo menos os tres itens


@param name description - os elementos ou parametros necessarios
para executar a funcao. A descricao deve comecar com letra mai
uscula
e terminar com ., e todos os parametros devem ser documentados
@examples - Exemplo de como usar a funcao. Essa e uma parte muito
importante, pois a maioria das pessoas sempre olha primeiro os
exemplos
@return - descreve qual sera o resultado da funcao

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

50 / 106

# Square a number.
#
# Takes in any numeric value and squares it
# @param x A numeric value to be squared
# @return The square of the input
# @examples
# square(5)
square<- function(x){
return(x^2)
}

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

51 / 106

Apos as modificacoes, o arquivo fc1.R devera ser salvo novamente


Clicando-se em Build and Reload o pacote sera compilado
novamente
Na lista dos packages, clicando-se em myfirstpackage ira aparecer

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

52 / 106

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

53 / 106

Item opcional See Also na documentacao de uma funcao


A documentacao feita para a funcao square e uma documentacao
simples, so com informac
oes basicas

E possvel adicionar outras informac


oes na documentacao de uma
funcao
Exemplos:
@seealso: cria o link para
http://www.r-project.org - paginas da internet
\code{\link{functioname}}
- alguma funcao do pr
oprio pacote
\code{\link[packagename]{functioname}}
- alguma funcao de outro pacote

O @seealso deve vir antes dos exemplos da funcao

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

54 / 106

Documentacao da funcao square incluindo o @seealso


# Square a number.
#
# Takes in any numeric value and squares it
# @param x A numeric value to be squared
# @return The square of the input
# @seealso \url{http://www.r-project.org} for
# more details and \code{\link[base]{sqrt}}
# for the square root function.
# @examples
# square(5)
square<- function(x){
return(x^2)
}
Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

55 / 106

Pasta man - continuacao


Apos a documentacao da funcao square feita no arquivo fc1.R
E da compilacao clicando-se Build and Reload
Clicando-se na pasta man

Ira aparecer o arquivo square.Rd

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

56 / 106

Arquivos com extensao .Rd da pasta man


Ap
os compilar a documentacao (usando-se o pacote roxygen2) de qualquer
funcao
Sera gerado um arquivo com extensao .Rd na pasta man
O arquivo com extensao .Rd tem um formato semelhante aos do Latex
Para editar a documentacao do arquivo de um pacote (funcao,
documentacao do pacote, conjunto de dados, etc)
Essas modificac
oes devem ser feitas no arquivo com a extensao .R, e nunca
nos arquivos com extensao .Rd da pasta man
De acordo com o criador do pacote roxygen2
Se a documentacao do pacote for feita usando-se o pacote roxygen2
O autor do pacote raramente tera que acessar os arquivos da pasta man

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

57 / 106

Documentacao do Pacote
Alem de documentar as func
oes, pode ser criada uma documentacao
geral para descrever o pacote
Essa documentacao podera ser visualizada com ?nome do pacote
Ainda nao ha uma documentacao para o nosso pacote, com
?myfirstpackage ira aparecer
No documentation for myfirstpackage in specified
packages and libraries: you could try ??myfirstpackage
O arquivo com a descricao geral do pacote deve ser salvo na pasta R,
e o nome do arquivo e geralmente nomedopacotepackage.R
Para o nosso pacote, myfirstpackagepackage.R

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

58 / 106

# myfirstpackage: My first R package.


#
# The myfirstpackage package provides important
# functions and datasets
# for descriptive analysis and some advanced topics
#
# @section My first R package functions:
# \code{\link[myfirtspackage]{square}}
#
# @docType package
# @name myfirstpackage
NULL

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

59 / 106

Caracteres especiais na documentacao feita usando o


pacote roxygen2

Ha tres caracteres especias que precisam de atencao especial para


serem includos na documentacao de um pacote
@
Na documentacao feita usando-se o pacote roxygen2, a @ vem antes
dos t
opicos @section, @param, @examples, etc
Para que a @ apareca na documentacao final como @, deve-se usar na
documentacao @@
Exemplo: Se o e-mail de um dos autores aparecer na documentacao,
como por exemplo o e-mail rrpescim@gmail.com
Na documentacao esse e-mail devera ser escrito usando-se @@, ou seja
rrpescim@@gmail.com

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

60 / 106

%
Para que a % apareca na documentacao final como %, deve-se usar na
documentacao \%
Exemplo: Coefficient of variation (CV \%)
Na documentacao isso devera ser escrito usando-se \%, ou seja
Coefficient of variation (CV \% )

\
Para que \ apareca na documentacao final como \
Deve-se usar na documentacao \\

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

61 / 106

Mais detalhes sobre a documentacao usando o pacote


roxygen2

http://r-pkgs.had.co.nz/man.html
https://github.com/klutometis/roxygen

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

62 / 106

Disponibilizar conjunto(s) de dados no pacote

O(s) conjunto(s) de dados nao e(sao) uma obrigatoriedade do pacote


Ficara a cargo do autor do pacote disponibilizar ou nao conjunto(s)
de dados
Uma das vantagens em disponibilizar conjunto(s) de dados no pacote,
e exemplificar para quais tipos de dados as func
oes do pacote poderao
ser utilizadas

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

63 / 106

Pasta data

O(s) conjunto(s) de dados disponibilizados pelo pacote ficam


localizados na pasta data
Esta pasta precisa ser criada
Apos criar a pasta data, podem ser inlcudos conjuntos de dados no
pacote da seguinte forma
Entrando diretamente com os dados
A partir de arquivos.txt
A partir de arquivos do excel (.xls) ou (.xlsx)
A partir de conjuntos de dados disponibilizados por outros pacotes
Outros formatos, como por exemplo .csv, etc

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

64 / 106

Entrando diretamente com os dados

x<-rnorm(100)
y<-runif(100)
data1<-data.frame(x,y)
devtools::use_data(data1)
A partir do comando devtools::use_data(data1) sera criado na
pasta data o arquivo data1.rda
Apos clicar em Build and Reload esse conjunto de dados estara
disponvel no pacote myfirstpackage digitando-se data1

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

65 / 106

A partir de arquivos.txt
Para adicionar ao pacote arquivos externos, devem ser criadas pastas
especficas
Para arquivos de dados externos (independentemente do formato),
eles devem ser salvos na pasta extdata (que deve ser criada),
localizada na pasta inst (que deve ser criada)
Seja por exemplo o arquivo onedata.txt - ele devera ser salvo na
pasta extdata, e apos ser salvo
mydata<-read.table("inst/extdata/onedata.txt",header=T)
devtools::use_data(mydata)
A partir do comando devtools::use_data(mydata) sera criado na
pasta data o arquivo mydata.rda
Apos clicar em Build and Reload esse conjunto de dados estara
disponvel no pacote myfirstpackage digitando-se mydata
Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

66 / 106

A partir de arquivos do excel (.xls) ou (.xlsx)


O arquivo do excel com extensao .xls ou .xlsx pode ter uma ou mais
planilhas, e devera ser salvo na pasta inst/extdata
Seja por exemplo o arquivo pct1.xls com uma planilha
Como e um arquivo do excel, para que o R faca a leitura do conjunto
de dados, e necessario solicitar um pacote que faca a exportacao dos
dados do excel para o R
Existem varias pacotes que realizam esse procedimento, e um desses
pacotes e o readxl
Esse pacote devera ser instalado, e solicitado usando-se o comando
library() ou require()
Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

67 / 106

Como o arquivo so tem uma planilha, s


o e necessario especificar o
nome do arquivo no comando
data10<-read_excel("inst/extdata/pct1.xls")
devtools::use_data(data10)
data10 foi o novo nome dado ao conjunto de dados
O conjunto de dados nao precisa necessariamente ter um novo nome,
pode ser o mesmo do arquivo em .xls
Dessa forma,
pct1<-read_excel("inst/extdata/pct1.xls")
devtools::use_data(pct1)

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

68 / 106

Seja o arquivo do excel pct2.xls com duas planilhas (poderiam ser


mais de duas planilhas), salvo na pasta inst/extdata
Como ha duas planilhas, alem do nome do arquivo e necessario
especificar o nome da planilha
data11<-read_excel("inst/extdata/pct2.xls","Plan1")
devtools::use_data(data11)

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

69 / 106

A partir de conjuntos de dados disponibilizados por outros


pacotes
O objetivo e disponibilizar o conjunto de dados carbone do pacote
AdequacyModel no pacote myfirstpackage
library(AdequacyModel)
devtools::use_data(carbone)
necessario solicitar a library que tem o conjunto de dados
E
necessario
Usando-se o comando devtools::use_data(nome do conjunto
de dados)
Sera criado na pasta data o arquivo carbone.rda
Apos compilar novamente o pacote, e digitando-se
library(myfirstpackage)
O conjunto de dados carbone sera disponibilizado pelo pacote
myfirstpackage
Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

70 / 106

Item Lazydata do arquivo DESCRIPTION

Nesse item, recomenda-se deixar sempre Lazydata:

TRUE

Pois se o pacote tem conjunto(s) de dados, e Lazydata:

TRUE

Isso significa que o(s) conjunto(s) de dados nao ira ocupar a


memoria, ate que seja solicitado pelo usuario

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

71 / 106

Descricao dos conjuntos de dados

Apos adicionar ao pacote os conjuntos de dados, e necessario realizar


a descricao dos conjuntos de dados
Caso contrario, o usuario nao ira saber sobre a origem dos dados, e
sobre as variaveis presentes nos conjuntos de dados
As descricoes dos conjuntos de dados devem ser feitas no arquivo com
a descricao geral do pacote
No nosse exemplo, a descricao de todos os conjuntos de dados sera
feita no arquivo myfirstpackagepackage.R

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

72 / 106

Descricao do conjunto de dados data1


# Random data
#
# Random data generated in R
#
# The variables are as follows:
#
# \itemize{
# \item x Random variable with normal distribution
# \item y Random variable with uniform distribution
# }
#
# @docType data
# @keywords datasets
# @name data1
# @usage data(data1)
# @format A data frame with 100 rows and 2 variables
NULL
Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

73 / 106

Pacotes que dependem das funcoes de outros pacotes

Quando uma funcao e desenvolvida, essa funcao pode depender de


funcoes disponibilizadas por outros pacotes
Exemplo: o coeficiente de variacao dos dados de uma amostra e uma
medida de variabilidade em relacao `a media amostral dos dados
Para calcular o coeficiente de variacao (CV) sao necessarios:
media amostral (x)
desvio padrao amostral (s)

CV =

s
x

O CV tambem pode ser expresso em termos de porcentagem, e para


isso basta multiplicar o valor do CV por 100
CV % =

s
x

100

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

74 / 106

Uma das alternativas para solicitar o valor do coeficiente de variacao de um


conjunto de dados no R, e usando o comando cv() da library raster
library(raster)
x<-c(1,2,3,1,3,4)
cv(x)
[1] 51.90258
O valor do coeficiente de variacao obtido usando-se o comando cv()
e expresso em termos de porcentagem
O objetivo e disponibilizar uma funcao que retorne o valor do
coeficiente de variacao, porem sem ser em termos de porcentagem, ou
seja, a partir da formula
CV =

s
x

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

75 / 106

O nome da funcao sera cv2


cv2<-function(x){
return(cv(x)/100)
}
cv2(x)
[1] 0.5190258
A funcao cv2() retorna o valor bruto do coeficiente de variacao
A funcao cv2() depende da funcao cv() que e disponibilizada pelo
pacote raster

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

76 / 106

Observacao: Para criar uma funcao a partir da f


ormula CV = xs , e possvel
criar uma formula mais simples sem a dependencia da funcao de outro
pacote, como por exemplo
cv2<-function(x){return(sd(x)/mean(x))}
Porem esse e um exemplo simples para mostrar como proceder quando for
necessario incluir na funcao de um pacote, func
oes de outros pacotes

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

77 / 106

A funcao cv2 devera ser salva na pasta R (pode ser salva no arquivo
fc1.R ou em outro arquivo com extensao .R)
E assim como as demais func
oes devera ter a documentacao,
exemplos, etc
# Coefficient of variation
#
# Compute the coefficient of variation
# (the standard deviation over the mean)
# @param x A vector of numbers
# @return The coefficient of variation
# @examples
# u<-c(1,7,9,3,6,4,6)
# cv2(u)
cv2<-function(x){
return(cv(x)/100)
}
Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

78 / 106

Topico Imports do arquivo DESCRIPTION


As funcoes do novo pacote podem depender das funcoes de diversos
pacotes
A lista dos pacotes necessarios para o funcionamento do novo pacote
deve ser includa no t
opico Imports do arquivo DESCRIPTION
No arquivo NAMESPACE usando-se o comando importFrom(),
deve ser colocado o nome do pacote do t
opico Imports, e o nome da
funcao necessaria para o funcionamento do pacote
Para o nosso exemplo: importFrom(raster,cv)
Para importar todas as func
oes do pacote raster: import(raster)
Mais detalhes sobre o NAMESPACE http://r-pkgs.had.co.nz/namespace.html

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

79 / 106

Exemplo do arquivo DESCRIPTION com a inlcusao do topico Imports


Package: myfirstpackage
Type: Package
Title: My first R package
Version: 0.1.0
Date: 2016-12-08
Author: Mariana Ragassi Urbano and Rodrigo Rossetto Pescim
Maintainer: Mariana Ragassi Urbano <mrurbanouel@gmail.com>
Description: Some important functions and datasets
Imports: raster
License: GPL-2
LazyData: TRUE

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

80 / 106

Se o novo pacote depende de dois ou mais pacotes


Os nomes dos pacotes deverao estar no t
opico Imports
em ordem alfabetica
separados por ,
preferivelmente cada um em uma linha

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

81 / 106

Exemplo: se o pacote myfirstpackage depende dos pacotes raster,


ggplot2 e epitools
Package: myfirstpackage
Type: Package
Title: My first R package
Version: 0.1.0
Date: 2016-12-08
Author: Mariana Ragassi Urbano and Rodrigo Rossetto Pescim
Maintainer: Mariana Ragassi Urbano <mrurbanouel@gmail.com>
Description: Some important functions and datasets
Imports: epitools,
ggplot2,
raster
License: GPL-2
LazyData: TRUE

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

82 / 106

Quando um pacote for instalado (por exemplo myfirstpackage),


serao automaticamente instalados os pacotes do topico Imports
E as funcoes do pacote myfirstpackage que dependem das funcoes
dos pacotes do topico Imports irao funcionar normalmente
As funcoes, conjuntos de dados, etc dos pacotes do topico Imports,
nao estarao disponveis solicitando-se apenas o pacote
myfirstpackage
Para que as funcoes, conjuntos de dados, etc dos pacotes do topico
Imports fiquem disponveis, e necessario solicitar os pacotes

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

83 / 106

Exemplo
O objetivo e usar a funcao cv do pacote raster
library(myfirstpackage)
x<-c(1,2,3)
cv(x)
Erro: n~
ao foi poss
vel encontrar a fun
c~
ao "cv"
Para usar a funcao cv do pacote raster e necessario carregar o pacote
raster
library(raster)
x<-c(1,2,3)
cv(x)
50

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

84 / 106

No t
opico Imports, nao e obrigat
orio colocar os n
umeros das versoes dos
pacotes
Mas e sempre bom especificar os n
umeros das vers
oes, para que o usuario
do pacote saiba as vers
oes dos pacotes dependentes
O n
umero da versao do pacote deve estar entre (), exemplo: raster
(>= 2.5 8)
Package: myfirstpackage
Type: Package
Title: My first R package
Version: 0.1.0
Date: 2016-12-08
Author: Mariana Ragassi Urbano and Rodrigo Rossetto Pescim
Maintainer: Mariana Ragassi Urbano <mrurbanouel@gmail.com>
Description: Some important functions and datasets
Imports: raster (>= 2.5-8)
License: GPL-2
LazyData: TRUE

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

85 / 106

Topico Suggests do arquivo DESCRIPTION

Suggests: Nesse topico sao listados os pacotes que podem ter


conjuntos de dados, ou uma u
nica funcao de interesse para o pacote
(myfirstpackage)
Os pacotes do topico Suggests nao sao instalados automaticamente
com a instalacao do pacote (myfirstpackage)
A vantagem do Suggests e que o usuario nao precisa instalar pacotes
que nao sao muito usados, e a inicializacao do pacote
(myfirstpackage) sera mais rapida

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

86 / 106

Adicionar os pacotes dos topicos Imports e Suggests de


forma direta no arquivo DESCRIPTION

devtools::use_package("raster") # Adicona o pacote


# ao t
opico Imports
devtools::use_package("raster","Suggests") # Adicona o
# pacote ao t
opico Suggests

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

87 / 106

Topico Depends do arquivo DESCRIPTION


Antes da versao 2.14.0 do software R
Au
nica forma de especificar de quais pacotes um novo pacote
dependia, era usando o Depends
Apesar do nome Depends, os pacotes necessarios para o
funcionamento de outro pacote devem ser listados no topico Imports
e nao no Depends
No topico Depends pode ser especificada a versao usada do R para a
construcao do pacote
Exemplo:
Depends: R (>= 3.3.2)
Adicionando o topico Depends ao arquivo DESCRIPTION

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

88 / 106

Package: myfirstpackage
Type: Package
Title: My first R package
Version: 0.1.0
Date: 2015-07-20
Author: Mariana Ragassi Urbano and Rodrigo Rossetto Pescim
Maintainer: Mariana Ragassi Urbano <mrurbanouel@gmail.com>
Description: Some important functions and datasets
Imports: raster (>= 2.5-8)
Depends: R (>= 3.3.2)
License: GPL-2
LazyData: TRUE

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

89 / 106

Diferencas entre os pacotes: Source, Bundled e Binary

um diret
Source Package (pacote fonte): E
orio com as pastas R,
man, data e arquivos como por exemplo DESCRIPTION, etc
Bundled package (pacote empacotado): Um bundled package e
um diretorio com todas as pastas e arquivos do pacote, compactado
em um u
nico arquivo
A extensao do bundled package e .tar.gz
.tar - m
ultiplos arquivos foram reduzidos em um u
nico arquivo
.gz - compactados usando gzip
Para ter um pacote com a extensao .tar.gz

devtools::build()

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

90 / 106

Binary package (pacote binario): Esse pacote pode ser


disponibilizado para usuarios que nao tem/ nao usam as ferramentas
de desenvolvimento de pacotes
Um pacote binario para o Windows nao pode ser instalado no Mac e
no Linux e vice-versa
No windows a extensao de um pacote binario e .zip
No Mac a extensao e .tgz
No Linux a extensao e .deb ou .rpm

No RStudio, o pacote a ser instalado pode ser um Bundled package


(extensao .tar.gz), Binary package (extensao .zip)
Um source Package podera ser compilado e instalado

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

91 / 106

library

Uma library e um diret


orio que contem todos os pacotes instalados
O usuario pode ter uma ou mais libraries
Geralmente ha duas libraries:
Uma para os pacotes instalados
Uma para os pacotes que vem juntos com a instalacao do R (base,
stats, etc)

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

92 / 106

Para localizar as libraries


.libPaths()
Para verificar os pacotes instalados nas libraries
lapply(.libPaths(), dir)
Para especificar uma library
.libPaths("c:/temp")
Para instalar um pacote em determinada library
install.packages("package", lib = "/Path/to/library")

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

93 / 106

Diferenca entre os comandos library() e require()

Para solicitar um pacote, os comandos a serem usados sao


library(nome do pacote) ou require(nome do pacote)
A principal diferenca entre os comandos library() e require() e o
que acontece se o pacote nao for encontrado
library() - informa o erro
require() - mostra uma mensagem de aviso e retorna FALSE

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

94 / 106

Numero da versao do pacote

O n
umero da versao de um pacote e uma sequencia de pelo menos
dois n
umeros separados por . ou Por exemplo
1.0 e 9.1-10 sao vers
oes validas
1 e 1.0- nao sao vers
oes validas

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

95 / 106

Componentes do numero da versao do pacote

O n
umero da versao de um pacote em desenvolvimento tem quatro
componentes major.minor.patch.dev
O valor do .dev e no mnimo 9000
A primeira versao de um pacote deve ser 0.0.0.9000
Pacotes disponibilizados no CRAN nao tem o componente .dev
Se a versao atual do pacote e 0.8.1.9000, qual sera a proxima versao
? 0.8.2, 0.9.0 ou 1.0.0 ?

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

96 / 106

Atualizacao do .minor

Na versao 0.8.1.9000, o valor do minor = 8


Se na nova versao foram apenas consertados alguns bugs, com
algumas funcoes adicionais, e alterac
oes na compatibilidade
Sera uma atualizacao do minor
Dessa forma a versao do pacote sera 0.9.0
Esse tipo de atualizacao e a mais frequente feita nos pacotes

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

97 / 106

Atualizacao do .major

Na versao 0.8.1.9000, o valor do major= 0


Se na nova versao foram feitas atualizac
oes que nao sao compatveis
com versoes anteriores e suscetveis a afetar muitos usuarios
Sera uma atualizacao do major
Dessa forma a versao do pacote sera 1.0.0
Essas apenas sao sugest
oes, e nao regras de como mudar os n
umeros
das versoes quando um pacote for atualizado

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

98 / 106

Submeter o pacote ao CRAN

Para realizar a submissao do pacote, devera ser um bundled package


com extensao .tar.gz
Antes de realizar a submissao todos os Errors e Warnings devem ser
corrigidos
O pacote desenvolvido devera ser compatvel com a versao mais
recente do R, e funcionar em pelo menos duas plataformas
Estar de acordo com as polticas do CRAN http://cran.r-project.org/web/packages/policies.html
O site para realizar a submissao e
http://cran.r-project.org/submit.html

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

99 / 106

Citacao do pacote

Apos submeter o pacote ao CRAN, esse podera ou nao ser aceito


Se o pacote for aceito pelo CRAN
Esse pacote sera disponibilizado no CRAN
Quando alguem utilizar algum pacote do CRAN, para realizar
Monografia
Dissertacao
Tese
Artigo, etc ...

O pacote devera ser citado


Como fazer a citacao de um pacote ?

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

100 / 106

O autor do pacote devera criar a citacao


Para que o usuario do pacote faca a citacao de forma correta
Para verificar como citar o software R, usa-se o comando citation()

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

101 / 106

A citacao do pacote, e feita com base nas informacoes do arquivo


DESCRIPTION
Porem, o autor pode editar essas informac
oes
Se foi feito um artigo, ou um livro que explica como usar o pacote
A citacao do pacote podera ser a citacao do artigo, ou livro, etc ...
Para editar as informac
oes da citacao
Deve-se criar na pasta inst um arquivo com nome CITATION

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

102 / 106

citHeader("To cite myfirstpackage in publications use:")


citEntry(entry = "Article",
title
= "My first R package {myfirstpackage}",
author
= personList(as.person("Mariana Urbano"),
as.person("Rodrigo Pescim")),
journal
= "UEM Journal",
year
= "2016",
volume
= "1",
number
= "3",
pages
= "1--25",
url
= "http://www.des.uem.br/
",
textVersion =
paste("Mariana Urbano, Rodrigo Pescim (2016).",
"My first R package.",
UEM Journal, 1(3), 1-25.",
"URL http://www.des.uem.br/."))
Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

103 / 106

Arquivo CITATION

Para fazer a citacao usa-se o comando cityEnty()


No topico entry deve-se colocar o tipo de citacao
Article
Book
PhDThesis, etc ...

Para mais informacoes sobre como fazer as citac


oes ?bibentry
Para visualizar a citacao do pacote citation("myfirstpackage")

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

104 / 106

Consideracoes Finais
Quando a construcao de um pacote e feita usando-se os pacotes
devtools e roxygen2 associados ao RStudio
O desenvolvimento do pacote e de forma automatica
Se o pesquisador for desenvolver mais pacotes, seria interessante
aprender mais detalhes sobre a construcao de pacotes
O material mais indicado e o Writing R extensions, disponvel no
site
http://cran.r-project.org/doc/manuals/R-exts.html#Creating-R-packages

Este manual pode ser difcil de entender quando nao se esta


familiarizado com os aspectos basicos de um pacote
Este material e indicado para quem possui noc
oes basicas da
construcao de pacotes, e tem interesse em conhecer os detalhes de
como construir um pacote passo a passo
Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

105 / 106

Sites interessantes

http://www.r-bloggers.com/
http://journal.r-project.org/
https://twitter.com/rstudiotips

Mariana Ragassi Urbano Rodrigo Rossetto Pescim

Meu primeiro pacote no R

7 de dezembro de 2016

106 / 106

Potrebbero piacerti anche