diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index bf615bbcbe82cec38e7823727cfa78ff9a982628..3cd7286f3da812ca84dd3dcdf0851d64b7cf7f33 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,4 +1,4 @@
-# Guia de Contribuição #
+# Guia de Contribuição
 
 **PET Estatística UFPR** - <pet.estatistica.ufpr@gmail.com>
 
@@ -8,784 +8,7 @@
 >
 >> -- Mark Twain
 
-<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-generate-toc again -->
-**Tabela de Conteúdo**
-
-  1. [Para que serve um Guia de Contribuição?](#para-que-serve-um-guia-de-contribuio)
-  1. [Qual é o Guia de Estilo de Código?](#qual--o-guia-de-estilo-de-cdigo)
-  1. [Qual é o fluxo de trabalho do *labestData*?](#qual--o-fluxo-de-trabalho-do-labestdata)
-  1. [Como dar nome aos datasets?](#como-dar-nome-aos-datasets)
-  1. [Como dar nome para as variáveis no `data.frame`?](#como-dar-nome-para-as-variveis-no-dataframe)
-  1. [Como declarar dados que não sejam tabelas?](#como-declarar-dados-que-no-sejam-tabelas)
-  1. [Que tipo de valor usar para as variáveis?](#que-tipo-de-valor-usar-para-as-variveis)
-  1. [O que colocar na documentação?](#o-que-colocar-na-documentao)
-  1. [Como dar nomes as vinhetas?](#como-dar-nomes-as-vinhetas)
-  1. [Como habilitar no `DESCRIPTION`](#como-habilitar-no-description)
-  1. [Como criar um *issue*?](#como-criar-um-issue)
-  1. [Quanto de trabalho representa um *issue*?](#quanto-de-trabalho-representa-um-issue)
-  1. [Como fechar ou editar um *issue*](#como-fechar-ou-editar-um-issue)
-  1. [Como fazer mensagens de *commit*?](#como-fazer-mensagens-de-commit)
-  1. [Como criar um *merge request*?](#como-criar-um-merge-request)
-  1. [Quais as exigências para aceitar um *MR*?](#quais-as-exigncias-para-aceitar-um-mr)
-  1. [Existe um *checklist* para incluir um *dataset*?](#existe-um-checklist-para-incluir-um-dataset)
-  1. [Existe um *checklist* antes de submeter um MR?](#existe-um-checklist-antes-de-submeter-um-mr)
-
-<!-- markdown-toc end -->
-
-## Para que serve um Guia de Contribuição? ##
-
-O Guia de Contribuição serve para orientar a forma de trabalhar, tanto
-individual quanto em equipe, para que seja eficiente, padronizada,
-coordenada e segura. Ele estabelece as regras e etapas principais do
-desenvolvimento de um projeto. O Guia de Contribuição incluí orientações
-de como escrever o código, as mensagens de *commit*, criar arquivos,
-etc.
-
-Interessados em participar do projeto devem se orientar pelo Guia de
-Contribuição sobre como o desenvolvimento acontece, pois ele contém a
-documentação sobre a realização das tarefas, as responsabilidades dos
-indivíduos e equipes, as etapas e prazos para atingir as metas do
-projeto.
-
-## Qual é o Guia de Estilo de Código? ##
-
-Um Guia de Estilo de Código é um conjunto de recomendações (ou regras)
-para padronizar a forma de escrever código. Códigos que são escritos
-seguindo um estilo padrão são mais fáceis de manter, modificar e
-garantir que estão corretamente escritos e funcionais, principalmente
-quando muitos programadores estão envolvidos.
-
-Quase todas as linguagem de programação permitem que os usuários adotem
-diferentes padrões de escrita de código.  Algumas não diferenciam
-maiúsculas e outras não exigem indentação, por exemplo. Em função de
-simplicidade, comodismo ou inércia na hora de escrever ou por causa de
-características da linguagem ou do editor usado, os usuários quase
-sempre tem um padrão particular para escrita de código.
-
-No pacote *labestData* deve ser considerado o *"idioma"* padrão do R,
-descrito no [STYLEGUIDE.md](STYLEGUIDE.md). Nesse arquivo é descrito
-desde como nomear objetos até o uso de espaço ao redor dos operadores.
-
-## Qual é o fluxo de trabalho do *labestData*? ##
-
-O fluxo de trabalho é a sequência de etapas que devem ser cumpridas para
-atingir um resultado. No *labestData*, o fluxo de trabalho tem unidade
-semanal de desenvolvimento e acompanhamento.
-
-**Descrição do roteiro semanal**
-
-  1. Criar um *issue* para o Projeto no GitLab. Ao criar o *issue*,
-     dedique-se para escrever uma detalhada descrição do trabalho a ser
-     feito. Isso informa a equipe sobre onde você irá trabalhar para que
-     não se duplique os esforços. Todo *issue* tem um número associado,
-     como `#7` e isso deve ser usado nas comunicações. O GitLab cria
-     links para os *issues* automaticamente nas mensagens quando se
-     escreve o número precedido de #, como `#7`.
-  2. Faça uma atualização do seu ramo `baby` local com o ramo `baby`
-     remoto do projeto no GitLab (atualize o HEAD). Quando você executa
-     o comando `git branch -a`, aqueles precedidos de `remote/` são os
-     remotos. Isso pode ser feito com o comando `git fetch origin baby`
-     que atualiza o `remotes/origin/baby` seguido de `git merge
-     origin/baby` para passar do remoto para o local o conteúdo
-     trazido. O comando `git pull origin baby` executa as duas ações em
-     um único comando. Em caso de insegurança, visite a
-     [Apostila de Git do PET Estatística](https://gitlab.c3sl.ufpr.br/pet-estatistica/apostila-git/raw/devel/apostila_git.pdf).
-  3. Crie um *branch*, a partir do `baby`, para começar o trabalho que
-     você descreveu no *issue* que acabou de criar no GitLab. O nome do
-     ramo deve ser formado pelo seu nome e número identificador, aquele
-     atribuído ao *issue* assim que ele foi criado, como `angela23` e
-     `eduardo31`. Usar esse padrão facilita para os membros descobrirem
-     do que se trata esse *branch*, pois basta consultar o *issue* de
-     mesmo número, e quem é o responsável pelo mesmo.
-  4. Faça o trabalho que descreveu. Nessa etapa você senta na frente do
-     computador e desenvolve o seu trabalho que, envolve os seguintes
-     passos:
-     1. Escrever, corrigir, aperfeiçoar, ampliar, revisar, organizar,
-        limpar, etc. Fazer o trabalho.
-     2. Faça *commits* com regularidade, de preferência, por unidades de
-        trabalho para as quais se tem um significado claro - uma unidade
-        de trabalho comitável - que possa ser expresso sem prejuízo por
-        uma frase curta ou por uma lista de frases curtas. Quando não
-        souber se já possuí uma unidade de trabalho merecedora de
-        *commit*, faça o *commit* do mesmo jeito. Não seja conservador
-        com a quantidade de *commits*. No entanto, seja caprichoso ao
-        fazer a sua mensagem de *commit* para garantir que esteja em
-        conformidade com o guia de boas práticas.
-     3. Em intervalos maiores, mas ainda com frequência, suba seu
-        trabalho para o repositório. Isso se faz com o comando `git push
-        origin fulano00`, em que `fulano00` representa o seu *issue*. É
-        importante fazer *pushs* sempre para evitar de perder o
-        trabalho, já que a sua máquina que está sujeita a avaria, e
-        mostrar trabalho, uma vez que isso estimula os demais a fazerem
-        o mesmo.
-  6. Quando cumprir com o trabalho previsto no seu *issue*, dê o *push*
-     final e faça uma requisição de mescla - um *merge request* (MR). Ao
-     criar o MR, assim como foi para o *issue*, existe um espaço para a
-     descrição de tudo o que foi realizado no *branch*. Basicamente isso
-     é um resumo de todos os *commits* feitos. Embora a descrição do
-     *issue* informe o que estava previsto fazer, isso não significa que
-     tudo foi feito. Você pode ter feito trabalho a mais, ou visto que
-     algo não foi necessário. Então relate na descrição do MR exatamente
-     o que será adicionado ao *branch* alvo. Os MR devem ser para o
-     *branch* `devel` e devem ser atribuídos aos *mergers* do projeto
-     (pessoas responsáveis por fazer as inspeções e merge).
-  7. Aguarde a avaliação do MR. Nessa etapa quem trabalha é o
-     *merger*. Em caso de aprovação, o *merge* será aplicado. Em caso
-     contrário, você será notificado a fazer alterações (correções ou
-     adições).
-  8. Se o MR não foi aceito, o *merger* vai informar o que fazer com
-     mensagem abaixo da descrição do merge. Faça as adequações
-     solicitadas. Volte para a etapa 4.
-  9. Quando o MR for aprovado, feche o *issue* correspondente. Indique
-     na mensagem de fechamento do *issue* qual foi o número do MR
-     dele. Os ramos de demanda - com prefixo de nome de *colaborador* -
-     são removidos após o *merge* mas os *issues* e os MR - que junto
-     com os *commits* contam a trajetória do projeto - permanecem no
-     GitLab.
-
-**Guia de códigos R e GIT para as atividades semanais**
-
-A cada semana devem ser criados novos ramos para realização das
-atividades propostas. Porém deve-se ter atenção ao criá-los. Estes ramos
-devem necessariamente sair do ramo `baby`. O ramo `baby` contém apenas
-um conjunto de dados para que adicionar os novos, seja mais fácil
-revisar as contribuições.
-
-Não é necessário que o ramo de trabalho anterior tenha sido incorporado
-ao devel, ou seja, para criar o `fulano2` não precisa ter o `fulano1`
-incorporado ao `devel`. Abaixo temos os comandos Git para criar o ramo a
-partir do `baby`.
-
-```bash
-# Retorna para o ramo baby (move o HEAD)
-git checkout baby
-
-# Atualiza o ramo baby com a versão do servidor
-git pull origin baby
-
-# Cria um ramo para desenvolver as atividades propostas no issue00
-git branch fulano00
-
-# Vai para o ramo criado (mode o HEAD)
-git checkout fulano00
-```
-
-Com isso já estamos em um ramo, `fulano00` criado especificamente para o
-desenvolvimento das atividades propostas no `issue #00`, assim podemos
-prosseguir com o trabalho propriamente dito, a adição de conjuntos de
-dados. Note que o ramo saiu do `baby`.
-
-```r
-#=======================================================================
-# Passo 1 - Ler e inserir os dados na pasta ./data-raw/
-
-# Usando o R -----------------------------------------------------------
-
-# Transcreva os dados das tabelas
-CiclanoTb0.0 <- expand.grid(X1 = 1:6, X2 = LETTERS[1:4])
-CiclanoTb0.0$X3 <- scan()
-
-# Ou faça
-CiclanoTb0.0 <- expand.grid(X1 = 1:6, X2 = LETTERS[1:4], X3 = 0)
-CiclanoTb0.0 <- edit(CiclanoTb0.0)
-
-# Salve a tabela em formato txt no diretório ./data-raw/
-write.table(CiclanoTb0.0,
-            file = "./data-raw/CiclanoTb0.0.txt",
-            sep = "\t",
-            quote = FALSE,
-            row.names = FALSE)
-
-# Você pode usar a função write2txt() definida em:
-# https://gitlab.c3sl.ufpr.br/snippets/34.
-
-write2txt(CiclanoTb0.0)
-
-# Usando outro software ------------------------------------------------
-
-# Transcreva os dados da tabela no software e salve-os no formato txt
-# na pasta ./data-raw/
-
-# Leia os dados na sessão R, para utilizá-los posteriormente
-CiclanoTb0.0 <- read.table("./data-raw/CiclanoTb0.0.txt",
-                           header = TRUE, sep = "\t")
-
-#=======================================================================
-# Passo 2 - Inserir os dados no diretório ./data/
-
-library(devtools)
-use_data(CiclanoTb0.0)
-
-# Você pode usar a função write2rda() definida em:
-# https://gitlab.c3sl.ufpr.br/snippets/34.
-
-write2rda(CiclanoTb0.0)
-
-#=======================================================================
-# Passo 3 - Escreva a documentação utilizando as tags roxygen2
-
-# Dica: prepare os códigos da sessão exemplo aqui, para verificar se os
-# gráficos/tabelas são produzidos corretamente
-
-xtabs(~X1, CiclanoTb0.0)
-plot(X1 ~ X2, data = CiclanoTb0.0)
-
-# Você pode usar a função write2Rdoc() definida em:
-# https://gitlab.c3sl.ufpr.br/snippets/34. Essa função cria o arquivo
-# com nome do objeto e já escreve algumas informações, retiradas do
-# próprio objeto. Depois de usar, abra o arquivo e preencha o restante.
-
-write2Rdoc(CiclanoTb0.0)
-
-#=======================================================================
-# Passo 4 - Gere e check a documentação (insere um arquivo no diretório
-# ./man/). Obs.: O houver aviso sobre o NAMESPACE não ter sido feito
-# pelo roxygen2, delete o arquivo para que ele seja contruído novamente.
-
-file.remove("NAMESPACE")
-
-document()
-check_man()
-
-#=======================================================================
-# Passo 5 - Verifique a constituição e organização do pacote. Caso
-# apareçam sinais de ERROR, WARNING ou NOTE, procure eliminar esses
-# sinais.
-
-check()
-
-```
-
-Após todos os passos concluídos devemos ter os arquivos `.txt`, `.rda`,
-`.R` e `.Rd` devidamente criados. Podemos voltar ao terminal e comitar
-essas contribuições.
-
-```bash
-# Adiciona os 4 arquivos criados e commita as alterações
-git add data-raw/CiclanoTb0.0.txt data/CiclanoTb0.0.rda
-git add R/CiclanoTb0.0.R man/CiclanoTb0.0.Rd
-git commit -m "Adiciona tabela 0.0 do livro do Ciclano"
-
-# Desconsidera as alterações realizadas nos arquivos que são gerados
-# automaticamente
-git checkout -- .
-
-# Limpe o seu diretório removendo os arquivos não rastreados.
-git clean -xfd
-
-# Enviando as alterações para o servidor
-git push origin fulano00
-```
-
-Agora com tudo comitado podemos seguir para o próximo conjunto de
-dados e refazer todos os passos descritos.
-
-Vale ressaltar que este guia de códigos compreende a rotina básica para
-inclusão de um conjunto de dados, se for necessária a inclusão de um
-biblioteca para elaboração de gráficos ou análises ou ainda forem
-criadas funções para o pacote os arquivos NAMESPACE e DESCRIPTION
-deverão ser alterados e essas alterações comitadas. Veja a seção
-[Como habilitar no DESCRIPTION](#como-habilitar-no-description) como
-adicionar declarar o uso de pacotes.
-
-## Como dar nome aos datasets? ##
-
-No caso de datasets de livros (obras impressas), o nome do dataset é
-formado pelo sobrenome do primeiro autor seguido da indentificação do
-conjunto de dados na obra. Os exemplos abaixo ilustram variações dessa
-regra.
-
-  * ZimmermannTb8.2: Tabela 8.2 do Zimmermann (2004);
-  * RamalhoTb4.3: Tabela 3 do capítulo 4 em Ramalho, Ferreira e Oliveira
-    (2005). Nesse livro as tabelas tem numeração reiniciada em todo
-    capítulo e por isso adiciona-se o numeral do capítulo para evitar
-    ambiguidade, já que vários capítulos certamente tem a tabela 1.
-  * BanzattoQd3.6.1: Quadro 3.6.1 do Banzatto e Kronka (2013). Este
-    livro usa o nome quadro ao invés de tabela.
-  * DiasEx10.7: Exercício 7 do capítulo 10 em Dias e Barros (2009). Os
-    exercício são númerados dentro dos capítulos então adiciona-se o
-    digito do capítulo para não haver ambiguidade.
-  * StorkEg2.3.5: Exemplo 2.3.4 do Stork et al. (2011). Para não
-    confundir Exercício e Exemplo, consideramos abreviar com Eg de
-    *exempli gratia*.
-  * BarbinPg52: Tabela sem legenda na página 52 do Barbin (2013). Nesse
-    caso identifica-se usando a página. No caso de várias tabelas na
-    mesma página, use mais um digito separado por ponto: Pg52.1 e
-    Pg52.2.
-  * PimentelPg142: Dados em Pimentel-Gomes (2009) que estão em tabelas
-    distribuidas em duas páginas mas não tem legenda, assim usa-se o
-    número da primeira página.
-  * CharnetApD.1: Primeiro conjunto de dados apresentado no apêndice D
-    do livro Charnet (2008).
-
-A prioridade na hora de atribuir a identificação é a seguinte: Tabela =
-Quadro > Exemplo = Exercício > Página. Ou seja, se a tabela 5 faz parte
-do exemplo 3 que está na página 122, o nome do dataset terá sufixo
-Tb5. Note que uma página pode ter mais de uma tabela, bem como um
-exemplo. Além do mais, diferentes edições podem preservar com mais
-facilidade a numeração das tabelas do que a localização delas nas mesmas
-páginas. Sendo assim, um dataset só será identificado como sufixo Ex ou
-Eg se não tiver legenda (Tabela ou Quadro) e só será identificado pela
-página se não houver outra alternativa.
-
-A tabela abaixo resume as siglas usadas para cada tipo de referência ao
-conjunto de dados dentro da obra.
-
-| Referência | Abreviação |
-|------------+------------|
-| Tabela     | Tb         |
-| Quadro     | Qd         |
-| Exercício  | Ex         |
-| Exemplo    | Eg         |
-| Apêndice   | Ap         |
-| Página     | Pg         |
-
-Dados em artigos devem usar o nome do primeiro autor, mas esteja atento
-às recomendações a seguir:
-
-  * Se do artigo for usado apenas uma tabela de dados, não há
-    necessidade de colocar referência e contador no nome, ou seja, basta
-    `Fulano` ao invés de `FulanoTb1`.
-  * Se do artigo for usado mais de uma tabela, deve-se usar um
-    contador. Nesse caso seria `Fulano1` e `Fulano2`.
-  * No caso de dados de artigos diferentes que tenham o primeiro com
-    mesmo sobrenome, para distingui-las deve-se usar o ano logo após o
-    sobrenome do primeiro autor.
-
-Dados de arquivos pessoais que não foram usados em uma publicação
-(artigo, trabalho de conclusão de curso, dissertação ou tese), poder ter
-o nome do proprietário, do local de origem, ou outro identificador que
-seja único que descritivo do dataset.
-
-## Como dar nome para as variáveis no `data.frame`? ##
-
-O nome das variáveis não deve conter acentos (ASCII pleno), não pode
-iniciar com número e só admite o underline como não alfanumérico. As
-variáveis de nome composto e longo podem ser representadas por siglas, e
-as de nome simples mas longo, por abreviação. Veja a tabela com
-exemplos.
-
-| Variável                   | Nome da coluna |
-|----------------------------+----------------|
-| Dias                       | dias           |
-| Peso                       | peso           |
-| Idade                      | idade          |
-| Renda                      | renda          |
-| Cultivar                   | cult           |
-| Variedade                  | varied         |
-| Adubação                   | adub           |
-| Produtividade              | prod           |
-| Temperatura                | temp           |
-| Pressão sanguínea          | ps             |
-| Massa seca de parte aérea  | mspa           |
-| Diâmetro à altura do peito | dap            |
-
-## Como declarar dados que não sejam tabelas? ##
-
-Existem casos em que os dados não são uma tabela (várias variáveis, em
-cada coluna uma variável de tipo diferente), ou seja, usar um
-`data.frame` para armazená-los não é recomendado. Existem três casos
-principais:
-
-  * Quando os dados são uma amostra aleatória de uma única variável, por
-    exemplo. Nesse caso, os dados devem ser armazenados em um vetor. Ele
-    deve ser um vetor nomeado no caso das observações terem rótulo, como
-    o nome da cidade que corresponde ao valor (veja o dado `precip`).
-  * Quando os dados são uma matriz, ou seja, todos os valores
-    correspondem ao mesmo tipo de valor. É o caso, por exemplo, de uma
-    matriz de distâncias entre cidades. Nesse caso, os dados devem ser
-    armazenados como matriz (`matrix`). Pode-se atribuir nome para as
-    linhas e colunas (`rownames` e `colnames`) para identificar os
-    registros.
-  * Quando os dados são uma amostra aleatória não independente, uma
-    séria temporal. Neste caso, no R, há uma classe de objetos `ts`
-    (_Time-Series_) que armazena os valores da amostra junto com a
-    informação da frequência em que foi observada.
-
-## Que tipo de valor usar para as variáveis? ##
-
-É fundamental que os objetos que armazenem as variáveis declarem o tipo
-correto de valor. São 5 os tipos principais:
-
-  * `numeric`: é o tipo de valor para variáveis contínuas. Normalmente
-    essas variáveis tem unidade de medida e números decimais (e.g. 1.85
-    m, 78.5 kg).
-  * `integer`: é o tipo de valor para variáveis discretas (números
-    inteiros). Variáveis de contagem são desse tipo. São também as
-    variáveis que identificam a repetição ou amostra, normalmente
-    sequências que começam em 1. Quando variáveis contínuas tiverem
-    representação que não tenha casas decimais, elas dever ser
-    declaradas como `integer` para salvar espaço em disco e tornar as
-    contas mais rápidas.
-  * `character`: é o tipo de valor para identificar indivíduos, por
-    exemplo, os nomes das cidades, dos bairros, dos pacientes, etc. Note
-    que esses nomes dificilmente se repetem no conjunto de dados são
-    únicos de um indivíduo e não de uma classe/grupo.
-  * `factor`: é tipo de valor para variáveis categóricas. São rótulos
-    que classificam um conjunto de indivíduos/observações com uma
-    variável qualitativa comum. Como exemplo, tem-se os blocos de um
-    experimento em delineamento de blocos casualizados, as observações
-    do mesmo bairro, os indivíduos do mesmo sexo, as parcelas do mesmo
-    local, cultivar, genótipo, variedade, população, etc.
-      * Os fatores devem ter o rótulo mais descritivo possível, ou seja,
-        se os níveis são Kennebec, Huinkul e Buena VIsta (variedades de
-        batatinha) não codifique como 1, 2 e 3. Também não abrevie
-        porque na forma abreviada, a correspondência não é
-        imediata. Quandos os nomes completos são usados, eles aparecem
-        nos gráficos e nas saídas.
-      * Variáveis como sexo (Masculino, Feminino) podem ser
-        abreviadas por M e F, sem prejuízo ao entendimento, pois a
-        correspondência é imediata (é fácil adivinhar que M e F
-        representa masculino e feminino). Da mesma forma, os níveis
-        resistente e suscetível poder ser abreviados para R e S, e os
-        Estados brasileiros podem ser representados pelas siglas.
-      * Nos casos em que os fatores são representados por número
-        inteiros mas são categóricos (como é caso dos blocos do
-        experimento), deve-se usar `factor` ao invés de `integer` para a
-        variável, mesmo que os rótulos continuem a ser os números
-        inteiros. Isso evita erros na interpretação e análise dos
-        dados. Uma opção para os blocos, por exemplo, é usar números
-        romanos, como I, II e III, para representar os diferentes
-        blocos. Para fatores como variedade, uma alternativas é usar
-        letras maiúsculas, como A, B e C, ao invés dos números.
-      * Deve ser feita distinção entre fatores nominais (`factor`) e
-        ordinais (`ordered`).
-  * `logical`: são para variáveis que assumem dois valores (`TRUE`,
-    `FALSE`). Também podem ser representados pelos valores inteiros 1
-    e 0.
-
-Abaixo tem-se o código R para fazer conversão de tipo de valor.
-
-```r
-x <- 1:5
-class(x)
-
-z <- factor(x)
-class(x)
-
-x <- c(1, 2, 3)
-y <- c(1L, 2L, 3L)
-w <- 1:3
-z <- as.integer(x)
-c(class(x), class(y), class(w), class(z))
-
-x <- gl(4, 2)
-class(x)
-
-levels(x) <- LETTERS[1:nlevels(x)]
-str(x)
-```
-
-## O que colocar na documentação? ##
-
-Os datasets devem ter uma documentação precisa. Existem vários campos da
-documentação que podem ser usados, no entanto, somente 7 serão exigidos.
-
-Uma lista completa com a maioria dos campos está documentada em
-<https://cran.r-project.org/web/packages/roxygen2/roxygen2.pdf>.
-
-Para ilustrar o uso dos campos principais, abaixo tem-se a documentação
-do *data.frame* `RamalhoTb4.7`. Embora os campos sejam autoexplicativos
-por causa do nome, segue breve explicação.
-
-  * `@name`: o nome do dataset.
-  * `@title`: título que representa o dataset. Deve estar captalizado,
-    ou seja iniciais maiúsculas, exceto para artigos e preposições.
-  * `@description`: descrição do conjunto de dados, como delineamento,
-    forma de arquisição dos dados, objetivo do estudo,
-    pessoas/organizações envolvidas, hipóteses, etc. Pode conter mais
-    de um parágrafo.
-  * `@format `: forma e conteúdo do dataset. Informa as dimensões e cada
-    uma das variáveis (nome, descrição, unidade de medida, tipo de
-    valor).
-  * `@keywords`: palavras que classificam o dataset, como o tipo de
-    variável resposta e delineamento (ex: DIC, DQL, contagem,
-    proporção). Elas aparecem no índice remissivo no manual em PDF.
-  * `@source`: indica a fonte dos dados. Normalmente é a referência
-    bibliográfia, a url do endereço de origem ou o nome proprietário dos
-    dados (indivíduo, grupo ou instituição).
-  * `@examples`: contém código R que produz gráficos e tabelas com os
-    dados.
-
-```
-#' @name RamalhoTb4.7
-#' @title Produção de Cultivares de Arroz
-#' @description Produção em função de cultivares de arroz em um
-#'     experimento instalado em delineamento de blocos casualizados.
-#' @format Um \code{data.frame} com 30 observações e 3 variáveis, em que
-#'
-#' \describe{
-#'
-#' \item{\code{bloco}}{Blocos do experimento com 3 níveis
-#'     qualitativos. Sua função é de controle local.}
-#'
-#' \item{\code{cultivar}}{Fator de interesse com 10 níveis
-#'     qualitativos. São as cultivares de arroz estudadas no
-#'     experimento.}
-#'
-#' \item{\code{producao}}{Produção de arroz medida em cada parcela
-#'     (kg ha\eqn{^{-1}}).}
-#'
-#' }
-#' @keywords DBC
-#' @source Ramalho, M. A. P., Ferreira, D. F., Oliveira,
-#'     A. C. de. (2005). Experimentação em genética e melhoramento de
-#'     plantas (2nd ed., p. 322). Lavras, MG: UFLA. (Tabela 7, pág. 62)
-#' @examples
-#'
-#' library(lattice)
-#'
-#' data(RamalhoTb4.7)
-#' str(RamalhoTb4.7)
-#'
-#' xyplot(producao ~ cultivar, groups = bloco, data = RamalhoTb4.7,
-#'        ylab = expression("Produção"~(kg~ha^{-1})),
-#'        xlab = "Cultivares de arroz")
-#'
-NULL
-```
-
-Nesse exemplo de documentação, atente para o seguinte:
-
-  * O título está captalizado e não termina com pontuação;
-  * O uso de `\code{}` para as descrição das variáveis que exibe esses
-    textos em fonte monoespaço. Cada `\item` descreve uma variável e a
-    ordem deles deve ser a mesma ordem das colunas no `data.frame`. A
-    decrição termina com ponto final.
-  * A referência bibliográfica no formato APA sem o `&` separando os
-    últimos dois autores. A referência contém cidade, estado e
-    editora. No final tem-se a referência e página sobre o dataset.
-  * Na sessão exemplos, usa-se `data()` e `str()` para o dataset. No
-    código da sessão exemplo, os gráficos ou tabelas devem priorizar
-    visualizações mais próximas das hipóteses ou interesse do
-    pesquisador. Sendo assim, a produção está em função das cultivar e
-    não dos blocos porque o interesse é estudar a cultivar, já o bloco
-    está presente para haver controle local.
-  * A representação das unidades de medida está em notação de potência
-    na documentação (`\eqn{}`) e no código da seção exemplos
-    (`expression()`).
-  * A indentação negativa de 4 espaços e largura de 72 digitos para fazer
-    quebra de linhas.
-
-Para gerar a citação bibliográfica no formato APA, padrão considerado no
-pacote, visite <http://www.citationmachine.net/apa/cite-a-book/manual> e
-preencha as informações. Use o resultado gerado para citar a obra.
-
-Em certas situações, o campo `@seealso` (veja também) pode ser usado. É
-o caso de dois arquivos de dados serem "irmãos", ou seja, são duas
-tabelas de experientos de mesma estrutura feitos em anos consecutivos,
-em locais diferentes, ou alguma outra condição de contorno diferente.
-
-Recentemente foi habilitado o uso de figuras nas páginas de documentação
-do R. Visite
-<https://cran.r-project.org/doc/manuals/R-exts.html#Figures> para
-detalhes.
-
-Por razão ainda desconhecida, títulos com acentos são substituídos por
-`NA` no manual em PDF. Na documentação em HTML, no entanto, e produzida
-sem erros.
-
-## Como dar nomes as vinhetas? ##
-
-TODO
-
-## Como habilitar no `DESCRIPTION` ##
-
-No caso de usar algum pacote que não seja da lista de pacotes básicos do
-R (aqueles que estão disponíveis na instalação mínima padrão), é
-necessário acrescentar o pacote a lista de pacotes na seção `Imports` ou
-`Suggests` do arquivo `DESCRIPTION`. Você pode editar o arquivo mas
-esteja atento para indentação e uso das vírgulas nesses campos. É
-aconselhado usar a função `devtools::use_package()`.
-
-```r
-use_package(package = "lattice", type = "Imports")
-use_package(package = "plyr", type = "Suggests")
-```
-
-## Como criar um *issue*? ##
-
-De uma maneira simples, um *issue* é uma tarefa. Quando você cria um
-*issue*, você está documentando algo que precisa ser feito. Essas
-tarefas podem ser relacionadas à adições (criar novos arquivos, criar
-conteúdo em arquivos) ou correção (ortográficas, em código) no seu
-pacote.
-
-Na página do repositório existe uma entrada chamada
-[*Issues*](https://gitlab.c3sl.ufpr.br/pet-estatistica/labesData/issues)
-no menu esquerdo. Ao entrar nessa página, existe um botão de create
-[new issue](https://gitlab.c3sl.ufpr.br/pet-estatistica/iguir2/issues/new?).
-
-Na página de criar um *issue*, você deve preencher os seguintes campos:
-
-  * Title: com um título que representa o seu *issue*.
-  * Description: com uma descrição detalhada do que deve ser feito no
-    *issue*.
-  * Assignee: com quem é o responsável pelo desenvolvimento do *issue*.
-  * Milestone: com a marca de milha a que o *issue* pertence, se alguma.
-  * Labels: com as palavras chaves apropriadas para o *issue*, se
-    alguma.
-
-No projeto **labesData** são adotadas como _Milestones_, as obras
-elencadas para transcrição dos dados ao pacote e os _Labels_ são as
-disciplinas Estatísticas que a obra coompreende. Visite ambos:
-[milestones](https://gitlab.c3sl.ufpr.br/pet-estatistica/labestData/milestones)
-e
-[labels](https://gitlab.c3sl.ufpr.br/pet-estatistica/labestData/labels).
-Por exemplo, ao criar um  *issue* que propõe a adição de três conjuntos
-de dados do capítulo 3 do livro Estatística Multivariada de Ferreira
-(2011) deve-se selecionar a _milestone_ `Ferreira` e o _label_ `Análise
-Multivariada`.
-
-Feito isso, clique em *Submit issue*. Seu *issue* vai ter um número
-associado e todos os membros do projeto poderão consultar o seu *issue*
-para saber detalhes sobre o que irá ser feito.
-
-## Quanto de trabalho representa um *issue*? ##
-
-É difícil ser preciso nisso, mas aconselha-se que no *labestData* um
-*issue* 1) seja o trabalho correspondente a duas horas de dedicação ou,
-ainda que o tempo estimado não seja perto desse, que 2) seja uma unidade
-característica de trabalho que não vale a pena dividir em mais *issues*.
-
-A última situação ocorre, por exemplo, quando você precisa criar uma
-grande função, que demora por volta de 5 horas de trabalho. Uma
-dedicação de 2 horas pode não ter uma função pronta que passe nas
-verificações de *build*. No primeiro caso, por outro lado, se o trabalho
-é texto, por exemplo, mesmo que este esteja incompleto a verificação de
-*build* será verde.
-
-## Como fechar ou editar um *issue* ##
-
-Para editar, basta acessar o menu
-[*Issues*](https://gitlab.c3sl.ufpr.br/pet-estatistica/labesData/issues)
-e abrir o *issue* desejado. A edição permite editar praticamente tudo,
-embora seja desaconselhado modificar o título e descrição do
-mesmo. Deve-se dedicar na hora de atribuir título e descriação para que
-sejam apropriados e sem necessidade de mudar no futuro. Essa é a
-filosofia do faça certo de primeira (*do it right the first time*).
-
-Na página de um *issue* é possível fazer uma discussão sobre ele, bem
-como atribuir a outro colaborador. Quandor o *issue* for concluído, ou
-seja quando o ramo dedicado as tarefas descritas neste *issue* for
-mesclado ao `devel`, deve-se fechá-lo.
-
-## Como fazer mensagens de *commit*? ##
-
-Mensagens de *commit* são de duas formas: simples e composta (mono ou
-multi linhas). As mensagens simples são aquelas que ocupam uma linha
-apenas, normalmente com uma única sentença. Elas descrevem modificações
-cuja descrição cabe em uma linha de 72 caracteres. Você pode escrever na
-própria linha de instrução do *commit*, como a seguir.
-
-```
-git commit -m "Minha mensagem de uma linha aqui."
-```
-
-As mensagens compostas, por outro, servem para documentar várias
-modificações. Então não é possível usar a opção `-m`. Apenas faça `git
-commit` seguido de ENTER que um editor de terminal vai abrir para que
-você escreva a mensagem de *commit*. Normalmente o editor é o vi ou
-nano, mas outros podem ser habilitados editando o arquivo `.gitcongif`
-que fica na sua *home*. Abaixo um exemplo de mensagem composta.
-
-```
-Inclui dataset da página 103
-
-  - Adiciona ./data-raw/dataset103.txt.
-  - Adiciona ./data/dataset103.rda.
-  - Adiciona ./R/dataset103.R.
-  - Adiciona ./man/dataset103.Rd.
-```
-
-As mensagens de *commit* devem ter verbos conjugados no presente do
-indicativo (faz, completa, adiciona, remove, edita, conserta, produz,
-gera, corrige, documenta, escreve, move, transforma, modifica). A
-mensagem de commit, simples ou composta, não deve ultrapassar 72
-caracteres de comprimento por linha.
-
-## Como criar um *merge request*? ##
-
-Criar um *merge request* (requisição de junção/mescla), acesse o menu
-[*Merge resquest*](https://gitlab.c3sl.ufpr.br/pet-estatistica/labestData/merge_requests)
-e preencha de forma semelhante ao que se faz com o *issue*.
-
-Note que a descrição do *issue* representa o será feito e do *merge
-request* o que foi de fato feito.
-
-## Quais as exigências para aceitar um *MR*? ##
-
-Para que um *merge request* seja aceito, 3 condições principais precisam
-ser atendidas:
-
-  1. O trabalho deve estar concluído. Isso significa de o que previsto
-     precisa ser cumprido. Em caso de não conclusão, uma justificativa
-     deve ser dada e aceita.
-  2. O *branch* tem que ter *build sucess* (estar verde). A vantagem,
-     dentre muitas, da integração contínua, é permitir saber se um ramo
-     tem problemas de código. Se um *branch* não passa nas verificações
-     do *build* (está vermelho), quando deveria passar, então algo está
-     errado e precisa ser consertado. Se não foi possível detectar a
-     causa de falha no *build* comunique que inspeções já foram feitas
-     na tentativa de solucionar o problema (dê a trilha percorrida).
-  3. O trabalho deve estar em conformidade com o Guia de Estilo de
-     Código. Ainda que o *branch* esteja verde - com *build status*
-     positivo - o *merger* (pessoa responsável pelo *merge*) deve
-     inspecionar o seu código e verificar se está em conformidade com o
-     Guia de Estilo de Código. Não havendo conformidade, ele vai indicar
-     as correções a serem feitas.
-
-Além dos pontos acima, um MR pode não ser aceito por precisar de
-revisões/correções não relacionadas com os pontos acima. Por exemplo,
-faltar declarar fatores como `factor`, incluir a unidade de medida das
-variáveis, modificar o código da seção exemplos.
-
-## Existe um *checklist* para incluir um *dataset*? ##
-
-Na lista que segue abaixo, `dados` representa o nome do dataset e o
-diretório raíz é o `/labestData`.
-
-  1. Criar o `dados.txt`. Criar o arquivo texto com os dados no
-     diretório `./data-raw`. Usar TAB com separador de campo, ponto
-     como separador decimal, sem nomes nas linhas e sem aspas.
-  2. Criar o `dados.rda`. Carregar o `dados.txt` e criar a imagem do
-     objeto (`*.rda`) no diretório `./data`. A forma mais simples é usar
-     a função `devtools::use_data(dados)`.
-  3. Escrever a documentação dos dados. Criar o arquivo `dados.R` no
-     diretório `./R/`. Lembre-se dos campos obrigatórios e esteja atento
-     das recomendações dadas na seção
-     [sobre documentação](#o-que-colocar-na-documentao).
-  4. Gerar o arquivo `dados.Rd`. Com o comando `devtools::document()`
-     gerar os arquivos de documentação que ficam no diretório
-     `./man`. Use `devtools::check_man()` para verificar se a
-     documentação foi escrita corretamente. Erros de grafia ou
-     preenchimento nos campos e ambientes são identificados aqui.
-  5. Por fim, execute `devtools::check()` e `devtools::build()`. Observe
-     se ocorrem notificações de `ERROR`, `WARNING` ou `NOTE`. Faça
-     correções para removê-las.
-
-No final, considerando apenas os arquivos do `dados`, você deve ter a
-essa estrutura de diretório abaixo
-
-```
-labestData/
-  |-- DESCRIPTION
-  |-- NAMESPACE
-  |-- data-raw/
-  |   `-- dados.txt
-  |-- data/
-  |   `-- dados.rda
-  |-- man/
-  |   `-- dados.Rd
-  `-- R/
-      `-- dados.R
-```
-
-## Existe um *checklist* antes de submeter um MR? ##
-
-  1. As atividades do *issue* foram concluídas.
-  2. O código está de acordo com o Guia de Estilo de Código.
-  3. O `devtools::check()` e `devtools::build()` não executam
-     notificações negativas.
-  4. O *branch* passa na integração contínua com *build status*
-     positivo.
+O Guia de Contribuição é uma vinheta do pacote. O fonte desse arquivo é
+o [vignettes/guia-contrib.Rmd](vignettes/guia-contrib.Rmd). Para acessar
+o guia de contribuição em html, instale o *labestData* e chame a
+vinheta.
diff --git a/STYLEGUIDE.md b/STYLEGUIDE.md
deleted file mode 100644
index de7a52315d6edd6927fc1da8c5c38333c11a1e0f..0000000000000000000000000000000000000000
--- a/STYLEGUIDE.md
+++ /dev/null
@@ -1,696 +0,0 @@
-Guia de Estilo de Escrita de Código R
-=====================================
-
-Walmes Zeviani - LEG/DEST/UFPR\
-Fernando Mayer - LEG/DEST/UFPR\
-Eduardo Jr - PET Estatística/UFPR
-
-****
-
-> Ugly code writers will respond, 'my ugly code runs!' That misses the
-> point. Coding style is not about make things 'work', is about making
-> them work in a way that is undestood by widest possible audience."\
-
->> -- Paul E. Johnson, R Style. An Rchaeological Commentary.
-
-**Sumário**
-
-  - [Nomes de arquivos](#nomes-de-arquivos)
-  - [Nomes de objetos](#nomes-de-objetos)
-      - [Contadores](#contadores)
-      - [Matrizes](#matrizes)
-  - [Atribuição](#atribuio)
-  - [Indentação](#indentao)
-  - [Operadores](#operadores)
-  - [Alinhamento vertical de referência (nos operadores)](#alinhamento-vertical-de-referncia-nos-operadores)
-  - [Vírgulas](#vrgulas)
-  - [Lagura de texto](#lagura-de-texto)
-  - [Quebras de linha](#quebras-de-linha)
-  - [Comentários](#comentrios)
-  - [Divisões de código](#divises-de-cdigo)
-  - [Linhas em branco](#linhas-em-branco)
-  - [Aspas](#aspas)
-  - [Chaves](#chaves)
-  - [Colchetes](#colchetes)
-  - [Parênteses](#parnteses)
-  - [Ponto e vírgula](#ponto-e-vrgula)
-  - [Documentação embutida de funções](#documentao-embutida-de-funes)
-  - [Carregando pacotes](#carregando-pacotes)
-
-Um Guia de Estilo de Código é um conjunto de recomendações (ou regras)
-para padronizar a forma de escrever código.  Códigos que são escritos
-seguindo um estilo padrão são mais fáceis de manter, modificar e
-garantir que estão corretamente escritos e funcionais, principalmente
-quando muitos programadores estão envolvidos.
-
-Quase todas as linguagem de programação permitem que os usuários adotem
-diferentes padrões de escrita de código.  Algumas não diferenciam
-maiúsculas e outras não exigem indentação, por exemplo. Em função de
-simplicidade, comodismo ou inércia na hora de escrever ou por causa de
-características da linguagem ou do editor usado, os usuários quase
-sempre tem um padrão particular para escrita de código.
-
-Esse é um Guia de Estilo Código estabele as convenções a serem seguidas
-para escrita de código R. Esse documento é baseado na consulta à varias
-fontes e deliberações próprias em alguns casos. A lista das principais
-fontes na qual esse Guia é baseado está abaixo.
-
-  * Guia de Estilo por [Hadley Wickham]:
-    <http://adv-r.had.co.nz/Style.html>.
-  * Guia de Estilo do Google:
-    <https://google.github.io/styleguide/Rguide.xml>.
-  * Guia de Estilo por
-    [Dylan Schwilk](http://www.depts.ttu.edu/biology/people/faculty/schwilk/)
-    <http://r-research-tool.schwilk.org/handouts/style-guide.html>.
-  * Guia de Estilo do R Data Science:
-    <https://github.com/rdatsci/PackagesInfo/wiki/R-Style-Guide>.
-  * Nota de Paul Johnson estilo de escrita de código:
-    <https://cran.r-project.org/web/packages/rockchalk/vignettes/Rstyle.pdf>.
-
-****
-## Nomes de arquivos ##
-
-Nomes de arquivos R devem ter o sulfixo maiúsculo.
-
-```
-# Bom.
-script.R
-
-# Ruim.
-script.r
-```
-
-No entanto, o nome do arquivo não pode ser vago como `script` -- que é
-algo óbvio. Use nomes com significado. Se for preciso, use um nome
-composto, mas não use espaços nos nomes (nem para diretórios). Isso
-evita um tanto de problemas de `path`. Dê preferência para o *undescore*
-como separador, já que ponto separa a extensão do nome e traço é
-separador de palavras compostas (guarda-chuva, super-homem, ex-aluno).
-
-```
-# Bom.
-prepara_dados.R
-ajusta_modelo.R
-
-# Ruim.
-prepara dados.R
-ajusta modelo.R
-```
-
-As extensões `Rmd`, `Rnw`, `RData`, `Rd` devem ter o R do sulfixo
-maiúsculo também, além de nomes não vagos ou óbvios.
-
-Se em um conjunto de arquivos houver relação sequêncial entre eles,
-destaque isso no nome. Por exemplo, componha nomes com números
-precedidos do mesmo nome.
-
-```
-# Bom.
-0_prepara_dados.R, 1_ajusta_modelo.R
-cap1_introducao.Rmd, cap2_exploratoria.Rmd, ..., cap5_conclusoes.Rmd
-```
-
-A vantagem de colocar um prefixo numerado é que os arquivos são exibidos
-em sequência no seu navegador de arquivos quando a ordenação for
-alfabética. Mas lembre-se que a ordenação é léxica e por isso `cap23*`
-aparece antes de `cap4*`. Evite usando zeros à esqueda, `cap04`.
-
-## Nomes de objetos ##
-
-Nomes de objetos devem ter um bom compromisso entre significado e
-praticidade (ou digitabilidade). Ou seja, não deve ser curto ao ponto de
-perder significado nem longo ao ponto de demorar para escrever. Quanto
-maior um nome, mais erramos ao escrevê-lo. Principalmente quando contém
-acentos, certo?  Portanto, evite nomes que levem acentos (âãàáçêéíôõóú).
-
-Dependendo da classe e da quantidade de objetos na sua sessão
-ou pacote, você pode ser mais ou menos verboso (usar nomes maiores ou
-menores) na hora de defini-los para devidamente distingui-los.
-
-Existem 3 estilos predominantes para escrita de nomes de objetos:
-
-  * *dot.case*: é o estilo que usa o separador como ponto. Foi o
-    primeiro a usado no R e inclusive incentivado por algum tempo. Uma
-    prova disse são as várias funções com esse padrão no R (todas as
-    `read.`, `as.`, `is.`, por exemplo). A mais notáveis são sa funções
-    método nas quais o ponto separa o nome da a função genérica da
-    classe o objeto que ela recebe. Por exemplo, `anova.lm` é a função
-    que retorna o quadro de ANOVA para objetos da classe `lm`. Nesse
-    caso o ponto tem função além da estética e não pode ser substituído
-    por nada.
-  * *snake_case*: é o estilo que usa o *underscore* como separador. O
-    pacote [devtools], do [Hadley Wickham], usa esse padrão. No pacote
-    [mcglm] esse estilo também foi adotado integralmente. Muitos
-    consideram um custo digitar o *underscore* (combina teclas) ao passo
-    que outros argumentam que facilita a leitura (pois é um traço
-    rasteiro sem altura).
-  * *camelCase*: é o estilo que usa letras maiúsculas para as iniciais
-    das palavras, com exceção da palavra inicial. O pacote [car], do
-    [John Fox], usa esse estilo.
-
-Uma quarto estilo é o *PascalCase* que difere do *camelCase* porque
-todas as iniciais são maiúsculas. A mesma função teria os seguintes
-nomes em cada caso: *read.table*, *read_table*, *readTable* e
-*ReadTable*.
-
-As implementações recentes de pacotes têm evitado o uso do *dot.case*
-para nomes de funções por confusões com funções métodos. No entanto, a
-reserva do ponto é para as funções método, assim, para objetos não
-existe problema.
-
-O importante é que você seja consistente, assuma e mantenha o mesmo
-estilo em todo seu pacote ou *scripts*. Um exemplo de projeto aberto em
-que todos seguem o padrão é no Emacs, onde todos os objetos usam o
-*dot-case*.
-
-Seja qualquer uma das 3 opções, a diferença só vai existir para objetos
-de nome composto, logicamente. Ainda assim, existem padrões usados pela
-maioria que distinguem objetos pela sua classe ou uso. Veremos alguns a
-seguir.
-
-### Contadores ###
-
-Contadores são variáveis definidas para uso em um *loop*. Para
-corresponder aos pseudo-códigos e expressões matemáticas, usa-se uma
-letra apenas. As mais usadas são i e j. O nome pequeno, com uma letra, é
-interessante também porque é comum o contador do *loop* ser usado para
-selecionar frações dos objetos (elementos, linhas, colunas, etc), dentro
-dos colchetes simples ou duplos, deixando o código mais claro.
-
-```r
-x <- 1:10
-for (i in 1:length(x)) {
-    x[i] <- sum(x[1:i]) + i
-}
-```
-
-### Matrizes ###
-
-O nome de matrizes geralmente se usa letras maiúsculas, a exemplo do que
-se faz nos textos matemáticos. Portanto, são opções imediatas `X`, `Y`,
-`K`, `C`, `A`, `L`, `U`, `V`, etc.
-
-IMPORTANTE: Evite usar `c`, `t`, `q`, `T` e `F` como nomes de
-objetos. As três primeiras são funções para concatenar vetores, transpor
-matrizes e sair do R (*quit*) e as últimas são abreviações de `TRUE` e
-`FALSE` (que não recomendamos usar, inclusive).
-
-## Atribuição ##
-
-Faça atribuição de objetos com o sinal de atribuir (`<-`) e não com o
-de igual. Deixe espaço cercar o operador.
-
-```r
-# Bom.
-x <- 1:10
-notas <- data.frame(aluno, freq, nota)
-
-# Ruim.
-x = 1:10
-notas = data.frame(aluno, freq, nota)
-
-# Péssimo.
-x=1:10
-notas<-data.frame(aluno, freq, nota)
-```
-
-O sinal de igual, embora faça atribuição também, não deve ser usado para
-isso. Reserva-se a passar valores para os argumentos de uma função ou
-nomear os elementos de objetos.
-
-```r
-# Nomes que levam certos caracteres devem declarados como string.
-notas <- c(Carlos = 95, Lucas = 89, Pedro = 77, "Antônio Augusto" = 60)
-```
-
-## Indentação ##
-
-A indentação é um dos requisitos fundamentais de estilo de código. É
-perda de tempo tentar compreender um código que não está devidamente
-indentado. Todo editor de texto voltado para programação tem recursos de
-indentação.
-
-A indentação em código R é com 4 espaços. Não se usa tabulação.  É comum
-encontrar código com tabulação de 2 espaços, que é inclusive a opção
-*default* do [RStudio].  Programadores argumentam que a indentação com 2
-espaços impõe pouca evidência da hierarquia do código, principalmente
-para fontes de texto que sejam finas.  Além disso, 4 espaços é
-equivalente a uma tabulação (que não devem se usada).  Para mudar o
-número de tabulações do [RStudio], vá em `Tools > Global options > Code
-> Editing` e em `Tab width` use 4. O [Emacs] usa 4 espaços por
-*default*.
-
-```r
-# Bom.
-for (i in 1:3) {
-    if (a > 0) {
-        m0 <- lm(log(y) ~ x,
-                 data = animals[[i]])
-    } else {
-        m0 <- lm(y ~ x,
-                 data = animals[[i]])
-    }
-}
-
-# Ruim.
-for (i in 1:3) {
-if (a > 0) {
-m0 <- lm(log(y) ~ x,
-data = animals[[i]])
-} else {
-m0 <- lm(y ~ x,
-data = animals[[i]])
-}
-}
-```
-
-## Operadores ##
-
-Deixe espaços ao redor dos operadores lógicos e matemáticos.
-
-  * Operadores lógicos: `==`, `!=`, `<`, `<=`, `>`, `>=`, `%in%`, `&`,
-    `&&`, `|`, `||`.
-  * Operadores matemáticos: `+`, `-`, `*`, `%*%`, `%%`, `%/%`, `%o%`. Os
-    operadores `^` e `/` são considerados exceções e não devem ter
-    espaços. Embora `**` seja um operador equivalente ao `^`, seu uso
-    não é recomendado.
-
-Certos operadores tem emprego diferenciado dependedo do que
-precede. Observe abaixo o emprego do sinal de menos e para o operador
-`~`, usado em fórmulas.
-
-```r
-# Diferença para o menos de negativo e menos de subtração.
-x <- -5 + 2
-x <- 2 - 5
-x <- -2 * (-3 - 4)
-
-# Fórmulas empregam a mesma ideia.
-m <- ~a + b
-m <- k ~ a + b
-```
-
-Os operador de sequência `:` e os operadores `::` e `:::`, não podem ser
-usados com espaços. O mesmo vale para o operador `$`, usado para
-consultar listas de data frames, e o `@`, usados para consultar listas
-de objetos S4.
-
-```r
-# Uma sequência regular.
-12:15
-
-# Criando uma função e chamando de `sum`.
-sum <- function(x) print("Olá")
-sum(c(98, 67, 14))
-
-# Usando a sum() do pacote base.
-base::sum(c(98, 67, 14))
-
-# Com ::: você acessa as funções não exportadas de um pacote. A função
-# addterm() do pacote MASS é uma função método cujos métodos não são
-# exportados. Para usar tais funções o ver o seu código, é necessário
-# 'invadir a privacidade do MASS'.
-library(MASS)
-ls("package:MASS") # Mostra objetos exportados.
-addterm            # Tenta ver o corpo da função.
-methods(addterm)   # Consulta o nome dos seus métodos.
-addterm.lm         # Tenta mas não encontra a função.
-MASS::addterm.lm   # Com o namespace diz que não foi exportada.
-MASS:::addterm.lm  # Com ::: o corpo da função aparece.
-
-# Consulta uma variável em um data.frame.
-cars$speed
-
-# Ajusta e consulta elementos na lista de um ajuste.
-m0 <- lm(dist ~ speed, data = cars)
-names(m0)
-m0$coefficients
-m0$fitted
-```
-
-## Alinhamento vertical de referência (nos operadores) ##
-
-Quando alinhamento vertical (*columnate*) de referência em um operador
-der mais clareza ao código, isso pode ser feito.
-
-```r
-altura  <- rnorm(100, mean = 1.8, sd = 0.1)
-peso    <- rnorm(100, mean = 70, sd = 5)
-idade   <- sample(20:50, size = 100, replace = TRUE)
-
-plot(peso ~ altura,
-     xlab = "Altura (m)",
-     ylab = "Peso (kg)",
-     col  = gray(idade/100),
-     pch  = 19)
-```
-
-Esse padrão vai exigir mais trabalho e não são muitos os editores que
-tem o recurso de indentação por referência.  O trabalho de indentar
-manualmente e manter isso nas revisões deve ter peso na decisão de
-usar. O [Emacs] tem o recurso de indentação baseado em expressão
-regular. Para aplicá-lo aos sinais de igual, selecione o texto e dê `M-x
-align-regexp RET = RET` (`RET` é pressionar Enter). Você pode, se usar
-isso com frequência, criar um *key binding* para uma função que faça
-isso no código selecionado.
-
-```lisp
-(defun columnate-at-R-assign-operator ()
-  "Função que alinha a região com a primeira ocorrência de sinais
-   ` <- ' e ` = '. Baseado em:
-   http://stackoverflow.com/questions/13315064/
-   marker-does-not-point-anywhere-from-align-regexp-emacs"
-  (interactive)
-  (save-excursion
-    (align-regexp (region-beginning) (region-end)
-                  "\\(\\s-*\\) \\(<-\\|=\\) " 1 1 nil)))
-
-(global-set-key (kbd "C-c a") 'columnate-at-R-assign-operator)
-```
-
-## Vírgulas ##
-
-Vírgulas devem ser seguidas de espaço, exceto para as de final de
-linha. Elas não devem ser precedidas de espaço, exceto quando precedidas
-por outra vírgula dentro dos colchetes de seleção.
-
-```r
-# Bom.
-EyeHairColor[, , 2]
-x <- c("Nashville", "Seattle Tacoma", "Wilmington", "Boise", "Raleigh",
-       "Charleston", "Juneau")
-
-# Ruim.
-EyeHairColor[,,2]
-y <- c("Nashville","Seattle Tacoma","Wilmington","Boise","Raleigh",
-       "Charleston","Juneau")
-```
-
-## Lagura de texto ##
-
-Assim como a indentação, a largura do texto precisa ser obdecida.  Os
-editores de R em geral trabalham com duas janelas, em uma o script e na
-outra o console. Para trabahar lado a lado é importante não haver
-rolamento (*scroll*) horizontal de janela/página. É também mais rápido
-navegar no código no sentido vertical, pulando linhas, do que no sentido
-horizontal, pulando characteres ou palavras. Isso sem contar que um
-texto mais estreito favoresce a compreensão porque, sendo mais vertical,
-a hierarquia se torna mais evidente. E por último, um código de linhas
-curtas está menos sujeito a quebras de linha acidentais quando enviado
-em mensagens, enviados para impressão ou inseridos em processadores de
-texto.
-
-Costuma-se usar 80 ou 72 espaços como comprimento máximo de linha, sendo
-este último ligeiramente mais adequado para trabalhar com *script* e
-*console* lado a lado nos monitores de resolução atuais.
-
-No [Emacs], para comodidade, pode-se habilitar o quebrar linhas
-automaticamente (`M-x auto-fill-mode`). Caso não goste, como muitos que
-acham um pouco desastroso, pode apenas habilidar o destaque com cores
-para linhas que excedem os limites.
-
-```lisp
-;; Define o comprimento máximo de texto para a linha.
-(setq-default fill-column 72)
-
-;; Habilita o quebra automática onde ultrapassar.
-(setq-default auto-fill-function 'do-auto-fill)
-
-;; Destaca com cores o texto que ultapassa o limite.
-(require 'whitespace)
-(setq whitespace-line-column fill-column)
-(setq whitespace-style
-      '(face lines-tail trailing spaces tabs empty))
-(global-whitespace-mode +1)
-```
-
-Na versão corrente do [RStudio] (0.99.467), quebra de linha automática
-não está disponível. O que se pode fazer, no entanto, é exibir uma linha
-vertical na margem. Para isso, vá em `Tools > Global options > Code >
-Display`, habilite `Show margin` e em `Margin column` use 72.
-
-## Quebras de linha ##
-
-Seja automaticamente ou não, para manter seu código dentro das margens
-você terá que quebrar linhas. No entanto, não é só pressionar ENTER. A
-nova linha deve ser indentada no nível correto -- coisa que editores
-para programação fazem automaticamente. A linha quebrada 1) não deve
-terminar com espaços ou sinal de igual e 2) deve terminar com operadores
-lógicos ou matemáticos para garantir continuidade dessas operações.
-
-Os espaços no final de linha são desnecessários, então evite-os. No
-[Emacs] você pode habilitar a remoção automática de espaços de final de
-linha (*traling spaces*).
-
-```lisp
-;; Habilita removação de espaços de fim de linha quando salva o arquivo.
-(add-hook 'before-save-hook 'delete-trailing-whitespace)
-```
-
-Terminar linhas com sinal de igual significa que argumento e valor
-ficaram em linhas diferentes. Embora não prejudique a execução do
-código, evitar isso melhora a legibilidade do código.
-
-Quando for necessário quebrar linhas em meio a operações matemáticas e
-lógicas, as linhas tem que terminar com um operador para haver
-continuidade da operação.
-
-```r
-# Bom.
-mean(precip,
-     na.rm = TRUE)
-
-# Ruim.
-mean(precip, na.rm =
-     TRUE)
-
-# x será apenas o resultado da soma, que é uma instrução completa.
-x <- 2 + 4 + 5
-- 3 - 8
-
-# Agora x será o resultado de soma e diferença.
-x <- 2 + 4 + 5 -
-    3 - 8
-```
-
-## Comentários ##
-
-Comentários no R são precedidos de `#` em qualquer quantidade. O [Emacs]
-[ESS] (*Emacs Speak Statistics* ou *Emacs Statistical System*) usa, por
-padrão, dois characteres porque imitou o esquema do `emacs-lisp-mode`
-onde o número de caracteres recebe indentação diferente: `#` indenta por
-padrão no digito 40, `##` indenta de acordo com o nível do código e
-`###` fica sempre colado com a margem esquerda. No [RStudio], no
-entanto, não é possível escolher o número de caracteres e sua
-indentação. É sempre `#` e alinhado ao código (para quê melhor, muitos
-vão dizer). Por isso, vale o denomidador comum e usuários de [Emacs]
-podem desabilidar o padrão do [ESS].
-
-```lisp
-(add-hook 'ess-mode-hook
-          '(lambda()
-             ;; Sem estilos de indentação.
-             (setq ess-indent-with-fancy-comments nil)
-             ;; Usar # para comentários.
-             (setq-local comment-add 0)))
-```
-
-## Divisões de código ##
-
-Uma boa prática, principalmente se seu código é material de ensino, é
-fazer divisões nele como se fossem seções de um artigo. Use uma marcação
-visual consistente e fácil de manter. Por anos nós usamos réguas com
-traços de tamanho 72 digitos e acreditamos ser uma das melhores
-opções. Muitos usam divisões com o sinal de comentários, #, mas
-acreditamos ficar carregado devido ao caracter ser volumoso.
-
-Para diferenciar o nível da divisão, usamos 3 variações: a maior (para
-capítulo e cabeçalho) é feita com sinal de igual (`=`), a média (para
-seção) é com traços (`-`) e a menor (para subseção) também, tem
-comprimento inferior (45 digitos). Criamos um *key binding* para isso no
-Emacs por comodidade mas se você usa outro editor que indique a coluna
-72, pressione até preencher com o digito desejado. Lembre-se de preceder
-com um `#`.
-
- * `Ctrol-7-1 =`: Com o control pressionado digite 71, solte e pressione
-    `=`. Isso vai repetir o = 71 vezes.
- * `Ctrol-7-1 -`: Idem mas com traço.
- * `Ctrol-4-4 -`: Idem mas repetindo 44 vezes.
-
-```r
-#=======================================================================
-# (Título)
-
-#-----------------------------------------------------------------------
-# (seção)
-
-#-------------------------------------------
-# (subseção)
-```
-
-## Linhas em branco ##
-
-As linhas em branco, assim como as divisões horizontais, servem para dar
-mais clareza ao código (e fôlego para quem lê/decifra). Entenda o código
-como um texto: divida-o em frases, parágrafos, subseções, seções e
-capítulos. Os três últimos você pode fazer com as divisões e os dois
-primeiros com linhas em branco. Evite usar mais do que duas linhas em
-branco seguidas.
-
-## Aspas ##
-
-Use sempre as aspas duplas. Elas são mais visíveis que as simples por
-serem mais grossas e não se confundem tão facilmente com a crase. Bons
-editores de código tem o destaque de sintaxe (*highlight sintax*) onde
-notavelmente as strings ficam de cor diferente (bem como números,
-keywords, comentários, etc), mas quando você envia por email ou imprime,
-nem sempre as cores acompanham o código. A própria seção Exemplos da
-documentação do R, em pdf ou html, é uma prova disso pois o código vai
-preto.
-
-Use as aspas simples quando não puder usar as duplas. Esse é o caso
-quando se constroí algumas expressões regulares.
-
-## Chaves ##
-
-Ao contrário do que se imagina, existem muitos [estilos de emprego de
-chaves]. No R, usamos o K&R no qual a chave que abre é o último
-character da linha precedida de espaço e a que fecha fica em linha
-exclusiva e indentada conforme o código.
-
-No R usamos chaves nas instruções de *if*, *for*, *while*, *repeat* e
-*function* e nas funções *with*, *switch* e *replicate*, por exemplo.
-
-```r
-pitagoras <- function(a, b) {
-    h <- sqrt(a^2 + b^2)
-}
-
-if (object.size(cars) > 1000) {
-    print("Objeto maior que 1 kb")
-} else {
-    print("Objeto não maior que 1 kb")
-}
-
-x <- cars
-while (object.size(x) > 1000) {
-    x <- x[-1, ]
-    print(object.size(x))
-}
-```
-
-As chaves podem ser omitidas quando o corpo for de uma linha apenas. Por
-outro lado, não recomendamos isso pois a presença das chaves realça a
-hierarquia e erros provocados por quebra acidental de linhas são
-evitados. Além disso, os editores se baseiam nas chaves para
-corretamento indentar o código.
-
-## Colchetes ##
-
-Os colchetes são usados para fazer seleção em objetos. Para objetos com
-mais de uma dimensão, como matrizes, *data frames* e *arrays*, usa-se a
-regra das vírgulas dentro de uma função: deixe espaço após as
-vírgulas. Também recomenda-se separa vírgulas por um espaço.
-
-```{r, eval=FALSE}
-# Bom.
-HairEyeColor["Black", , ]
-HairEyeColor[, c("Blue", "Green"), ]
-HairEyeColor[, , -1]
-
-# Ruim.
-HairEyeColor["Black",,]
-HairEyeColor[,c("Blue","Green"),]
-HairEyeColor[,,-1]
-```
-
-## Parênteses ##
-
-No R, não se coloca espaço entre os parenteses e seu conteúdo. Existe
-espaço ao redor do par de parênteses nas instruções de *if*, *for* e
-*while*.
-
-```r
-# Bom.
-if (x %% 2 == 0) {
-    print("x é par.")
-}
-
-# Ruim.
-if( x %% 2 == 0 ){
-    print( "x é par." )
-}
-```
-
-## Ponto e vírgula ##
-
-Ponto e vírgula no R serve para separar instruções na mesma linha,
-funcionando como uma quebra visual de linha. No entanto, não se
-recomenda o seu uso.
-
-```r
-# Bom.
-library(car)
-library(gdata)
-library(lattice)
-
-# Ruim.
-library(car); library(gdata); library(lattice)
-```
-
-## Documentação embutida de funções ##
-
-Uma prática muito valorizada é documentar as funções que você cria. A
-documentação serve de lembrete para você no futuro e é instrução para as
-pessoas que usam o seu código. Abaixo a função *baskara* foi documentada
-de duas formas diferentes. A primeira é uma forma livre enquanto que a
-segunda usa as *tags* do [`roxygen2`]. Se você escreve uma função e tem
-intenção de incluí-la em um pacote, o segundo padrão é mais
-interessante.
-
-Perceba que esse exemplo é bem minimalista pois apenas documenta os
-*inputs* e o *output* da função. Na impede de detalhes serem
-adicionados.
-
-```r
-# Função documentada de forma livre.
-baskara <- function(a, b, c) {
-    # a,b,c: (numeric) coeficientes da equação de segundo grau
-    #     a + b * x + c * x^2.
-    # retorna: (numeric) vetor com as raízes.
-    r <- (-b + c(-1, 1) * sqrt(b^2 - 4 * a * c))/(2 * a)
-    return(r)
-}
-
-# Documentação com tags do roxygen2.
-baskara <- function(a, b, c) {
-    #' @param a,b,c (numeric) coeficientes da equação de segundo grau
-    #'     \eqn{a + b * x + c * x^2}.
-    #' @return (numeric) vetor com as raízes.
-    r <- (-b + c(-1, 1) * sqrt(b^2 - 4 * a * c))/(2 * a)
-    return(r)
-}
-```
-
-## Carregando pacotes ##
-
-É comum se ver duas formas de carregar pacote: com `library()` e com
-`require()`. Embora o segundo, por ser um verbo, faça mais sentido,
-pacotes em scripts devem ser carregados com `library`. A diferença, como
-explica [Yihui Xie], é que `require()` tenta carregar um pacote e
-retorna *FALSE* se não conseguir enquanto que `library()` retorna
-*error* nesse caso.
-
-<!--------------------------------------------- -->
-
-[ESS]: http://ess.r-project.org/Manual/ess.html
-[RStudio]: https://www.rstudio.com/
-[Emacs]: https://www.gnu.org/software/emacs/
-[mcglm]: https://github.com/wbonat/mcglm
-[car]: http://www.rdocumentation.org/packages/car
-[devtools]: http://www.rdocumentation.org/packages/devtools
-[estilos de emprego de chaves]: https://en.wikipedia.org/wiki/Indent_style
-[Yihui Xie]: http://yihui.name/en/2014/07/library-vs-require/
-[Hadley Wickham]: http://hadley.nz/
-[John Fox]: http://socserv.mcmaster.ca/jfox/
-[`roxygen2`]: https://cran.r-project.org/web/packages/roxygen2/roxygen2.pdf