
title: "Vinhetas"
author: "Fernando Mayer & Walmes Zeviani"
library(knitr)
opts_chunk$set(
dev.args=list(family = "Palatino"))
options(width = 68)
## Carrega as definições de sessão.
source("config.R")
rty <- "md"
Adicionando vinheta
Brainstorm
Vignette - vinheta - esboço - episódio.
- http://r-pkgs.had.co.nz/vignettes.html
- http://kbroman.org/pkg_primer/pages/vignettes.html
- http://yihui.name/en/2012/09/r-package-markdown-vignettes/
- https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Writing-package-vignettes
- http://rmflight.github.io/posts/2014/07/vignetteAnalysis.html
- http://www.stats.uwo.ca/faculty/murdoch/ism2013/5Vignettes.pdf
- https://www.statistik.lmu.de/~leisch/Sweave/Sweave-Rnews-2003-2.pdf
- http://www.magesblog.com/2012/01/survey-writing-package-vignette.html
- https://tagteam.harvard.edu/hub_feeds/1981/feed_items/1395647
- https://stat545-ubc.github.io/packages00_index.html
- https://cran.r-project.org/web/packages/knitr/vignettes/knitr-markdown.html
O jeito antigo de fazer pacote:
- http://biostat.mc.vanderbilt.edu/wiki/Main/HowToCreateAnRPackage
- http://leg.ufpr.br/~paulojus/embrapa/Rembrapa/Rembrapase37.html
O que são as vinhetas?
- Documentação extendida do pacote? De certa forma sim.
- Uma documentação menos pontual e mais geral? Sim.
- Substitui um artigo? Não, pois artigos não exibem código;
- É uma propaganda do pacote? Sem dúvida.
- A melhor forma de apresentar uma introdução geral do pacote.
- Pode dar detalhes técnicos que não caberiam na documentação.
- Pode demonstrar aspectos que não documentação não seria possível porque lá só tem código de input.
- Uma vinheta é livre para ter figuras, links, gifs, tabelas, listas, até app shiny e gráficos dinâmicos como o googleVis.
Elas ficam no diretório vignettes/
. São parte do sistema de
ajuda/documentação do pacote.
As entradas com % no YAML são ignoradas pelo LaTex e processadas pelo R para gerar links na home da documentação (suponho).
A vantagem do HTML é que uma index pode dar acesso às várias vinhetas de um pacote. Torna fácil para o usuário iniciante.
## Exibe as vinhetas disponíveis.
vignette()
## Acessa uma vinheta.
vignette("lala")
sistem.file("lala", package="lulu")
browseVignettes("YourPackage")
A coisa que mais fácil ajuda você a conhecer as funcionalidades de um pacote é sem dúvida a sua vinheta (vignette). Um pacote pode ter várias vinhetas, cada uma exibindo um tema diferente de funcionalidades.
Produzir a vinheta de um pacote é tão fácil quanto as demais partes dele. Usaremos os recursos disponíveis no devtools mais uma vez.
A vinheta será escrita em
r renderUrl("RmarkDown","http://rmarkdown.rstudio.com/",rty)
. Escrever
vinhetas têm uma excelente
r renderUrl("documentação","http://r-pkgs.had.co.nz/vignettes.html",rty)
.
A vantagem de escrever em MarkDown é a velocidade, praticidade e poder obter vinhetas em html e pdf facilmente.
## DESCRIPTION antes do use_vignette().
cat(readLines("./meupacote/DESCRIPTION"), sep = "\n")
library(devtools)
## Cria a primeira vinheta do pacote.
use_vignette("minhaVinheta1")
if (file.exists("./meupacote/vignettes/minhaVinheta1.Rmd")){
file.remove("./meupacote/vignettes/minhaVinheta1.Rmd")
}
library(devtools)
use_vignette("minhaVinheta1", pkg = "./meupacote/")
## DESCRIPTION depois do use_vignette().
cat(readLines("./meupacote/DESCRIPTION"), sep = "\n")
O comando use_vignette()
cria o diretório vignettes/
com um arquivo
.Rmd
com o nome que você usou. Além disso ele adiciona ao campo
Suggests
no DESCRIPTION
os pacotes knitr
e rmarkdown
,
necessários para gerar a vinheta.
## Mostra diretório e arquivos criados.
cat(system("tree --charset=ascii ./meupacote/ | head -n -2",
intern = TRUE), sep = "\n")
Esse arquivo é criado já com conteúdo para poder orientá-lo. No topo do arquivo tem uma parte de meta dados escrita em YAML (yet another markup language) que detalha as informações do documento e definem o processo de sua criação.
## Mostra o YAML da vinheta original.
cat(readLines("./meupacote/vignettes/minhaVinheta1.Rmd")[1:10],
sep = "\n")
## Nada entrou no .Rbuildignore.
## cat(readLines("./meupacote/.Rbuildignore"),
## sep = "\n")
Edite à vontade esse arquivo fazendo a melhor propaganda possível do seu
pacote. Tome cuidado com os pacotes que vai usar. É indicado que eles
estejam nos campos do seu DESCRIPTION
, senão no Imports
, pelo menos
no Suggests
. Abaixo o arquivo que criamos, que está muito simples,
logicamente, mas é apenas para marcar território mesmo.
TODO trocar essa vinheta por uma da função baskara()
com os métodos.
file.copy(from = "aux/minhaVinheta1.Rmd",
to = "meupacote/vignettes/minhaVinheta1.Rmd",
overwrite = TRUE)
## Mostra a vinheta mínima.
cat(readLines("./meupacote/vignettes/minhaVinheta1.Rmd"),
sep = "\n")
Para produzir a vinheta, use o comando build_vignettes()
. Ele vai
gerar as vinhetas de cada arquivo e levá-las para outro diretório, como
pode ser visto abaixo. Caso você não tenha um dos seguintes pacotes:
evaluate
, formatR
, highr
, knitr
, mime
, stringi
; será
necessário instalá-los.
build_vignettes()
## FIXME: Não existe como sair desse erro! De usar o output do
## build_vignettes().
x <- capture.output(build_vignettes("./meupacote/"))
cat(x, sep = "\n")
sink("aux.txt")
build_vignettes("./meupacote/")
sink()
Building meupacote vignettes
Moving minhaVinheta1.html, minhaVinheta1.R to inst/doc/
Copying minhaVinheta1.Rmd to inst/doc/
TODO Incluir a vinheta do pitagoras()
ou outra funcionalidade com
output em PDF.
Por fim, basta executar check()
e build()
mais uma vez para incluir
as vinhetas no .tar.gz
do seu pacote.