Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
7 de dezembro de 2016
3 / 106
7 de dezembro de 2016
4 / 106
7 de dezembro de 2016
5 / 106
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
7 de dezembro de 2016
7 / 106
Instalacao do 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
7 de dezembro de 2016
9 / 106
Instalacao do RStudio
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
7 de dezembro de 2016
11 / 106
7 de dezembro de 2016
12 / 106
7 de dezembro de 2016
13 / 106
7 de dezembro de 2016
14 / 106
7 de dezembro de 2016
15 / 106
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
7 de dezembro de 2016
17 / 106
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
7 de dezembro de 2016
19 / 106
Pacote roxygen2
7 de dezembro de 2016
20 / 106
7 de dezembro de 2016
21 / 106
7 de dezembro de 2016
22 / 106
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
7 de dezembro de 2016
24 / 106
MeuPacote - correto
Meu.Pacote - correto
Meu1.Pacote - correto
1Pacote - Errado
1Pacote.- Errado
O nome do nosso pacote sera myfisrtpackage
7 de dezembro de 2016
25 / 106
7 de dezembro de 2016
26 / 106
7 de dezembro de 2016
27 / 106
7 de dezembro de 2016
28 / 106
7 de dezembro de 2016
29 / 106
7 de dezembro de 2016
30 / 106
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
7 de dezembro de 2016
31 / 106
Pasta R
7 de dezembro de 2016
32 / 106
7 de dezembro de 2016
33 / 106
Formatacao da funcao
7 de dezembro de 2016
34 / 106
7 de dezembro de 2016
35 / 106
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
7 de dezembro de 2016
37 / 106
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
7 de dezembro de 2016
38 / 106
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
7 de dezembro de 2016
39 / 106
7 de dezembro de 2016
40 / 106
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
7 de dezembro de 2016
42 / 106
7 de dezembro de 2016
43 / 106
7 de dezembro de 2016
44 / 106
Documentacao do pacote
Clicando-se em
7 de dezembro de 2016
45 / 106
Ira aparecer
7 de dezembro de 2016
46 / 106
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
7 de dezembro de 2016
48 / 106
7 de dezembro de 2016
49 / 106
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)
}
7 de dezembro de 2016
51 / 106
7 de dezembro de 2016
52 / 106
7 de dezembro de 2016
53 / 106
7 de dezembro de 2016
54 / 106
7 de dezembro de 2016
55 / 106
7 de dezembro de 2016
56 / 106
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
7 de dezembro de 2016
58 / 106
7 de dezembro de 2016
59 / 106
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 \\
7 de dezembro de 2016
61 / 106
http://r-pkgs.had.co.nz/man.html
https://github.com/klutometis/roxygen
7 de dezembro de 2016
62 / 106
7 de dezembro de 2016
63 / 106
Pasta data
7 de dezembro de 2016
64 / 106
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
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
7 de dezembro de 2016
66 / 106
7 de dezembro de 2016
67 / 106
7 de dezembro de 2016
68 / 106
7 de dezembro de 2016
69 / 106
7 de dezembro de 2016
70 / 106
TRUE
TRUE
7 de dezembro de 2016
71 / 106
7 de dezembro de 2016
72 / 106
7 de dezembro de 2016
73 / 106
CV =
s
x
s
x
100
7 de dezembro de 2016
74 / 106
s
x
7 de dezembro de 2016
75 / 106
7 de dezembro de 2016
76 / 106
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
7 de dezembro de 2016
78 / 106
7 de dezembro de 2016
79 / 106
7 de dezembro de 2016
80 / 106
7 de dezembro de 2016
81 / 106
7 de dezembro de 2016
82 / 106
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
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
7 de dezembro de 2016
85 / 106
7 de dezembro de 2016
86 / 106
7 de dezembro de 2016
87 / 106
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
7 de dezembro de 2016
89 / 106
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()
7 de dezembro de 2016
90 / 106
7 de dezembro de 2016
91 / 106
library
7 de dezembro de 2016
92 / 106
7 de dezembro de 2016
93 / 106
7 de dezembro de 2016
94 / 106
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
7 de dezembro de 2016
95 / 106
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 ?
7 de dezembro de 2016
96 / 106
Atualizacao do .minor
7 de dezembro de 2016
97 / 106
Atualizacao do .major
7 de dezembro de 2016
98 / 106
7 de dezembro de 2016
99 / 106
Citacao do pacote
7 de dezembro de 2016
100 / 106
7 de dezembro de 2016
101 / 106
7 de dezembro de 2016
102 / 106
7 de dezembro de 2016
103 / 106
Arquivo CITATION
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
7 de dezembro de 2016
105 / 106
Sites interessantes
http://www.r-bloggers.com/
http://journal.r-project.org/
https://twitter.com/rstudiotips
7 de dezembro de 2016
106 / 106