Relatórios e apresentações automáticas

Intermediário

Chunks de Código em R

  • Os chunks são campos onde podemos inserir código de R (ou Python, SQL, Bash…) em um arquivo.

  • Os chunks podem ter rótulos/nomes, para identificar o conteúdo gerado.

  • Existe um atalho do teclado para criar chunks no RStudio: Ctrl + ALt + I.

  • Também é possível criar um chunk clicando no botão do RStudio.

Opções de Chunk

  • Opções de chunk que podem afetar como os chunks de código são compilados. Exemplos:

  • echo: false -> evita que o próprio código apareça

  • eval: false -> mostra o código, mas ele não é executado

  • warning: false e message: false - oculta mensagens de avisos produzidas

  • out-width -> controla o a largura das figuras, gráficos, tabelas geradas (Ex: out-width: "100%")

  • Ex de configuração do chunk

```{r}
#| warning: false
#| message: false
```

Obs: O RMarkdown permite outra forma de incluir opções de chunk, mas ela não é mais recomendada.

Códigos em R - Opções de chunk

Código + Resultado

  • echo: true
nrow(mtcars)
[1] 32

Apenas código

  • echo: true e eval: false
nrow(mtcars)

Apenas resultado

  • echo: false
[1] 32

Opções globais de Chunk

  • As opções globais de chunk são opções de chunk que são válidas para o documento inteiro.

  • Algumas opções são úteis, como fig-align: "center".

  • Para configurar as opções globais de chunk, modifique o código abaixo e insira no código YAML:

knitr:
  opts_chunk: 
    message: false
    warning: false
    echo: true

Adicionando imagens usando o knitr

  • Função: knitr::include_graphics()

  • Opções de Chunk:

  • out-width: "30%" - Largura da imagem

  • fig-align: "center" - Alinhamento da imagem

  • fig-cap: "Logo R" - Legenda da imagem

Exemplo:

```{r}
#| out-width: "30%"
#| fig-align: 'center'
#| fig-cap: "Logo R"
knitr::include_graphics("https://www.r-project.org/Rlogo.png")
```

Logo R

Adicionar gráficos

  • Você pode adicionar um chunk de código com o código que gera o gráfico.

  • Controle como isso aparecerá no relatório usando as opções de chunk.

  • Experimente também a opção dpi: 300 (ou número maior), pois controla a resolução da imagem.

Tabelas com R

  • Várias opções: knitr::kable(), DT::datatable() , reactable::reactable(), entre outras.
mtcars |>
  head(3) |>
  knitr::kable()
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1

Código inline

  • É útil para adicionar resultados de código em R dentro de parágrafos.

Exemplo:

A base mtcars possui 32 carros. As colunas presentes na base são mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear, e carb.

Código Markdown:

A base mtcars possui `r nrow(mtcars)` carros.
As colunas presentes na base são 
`r knitr::combine_words(names(mtcars), and = "e ")`.

Adicionar equações

  • Podemos adicionar equações em LaTeX. Dica: Equações em LaTeX no Mettzer, ou pesquise no google por “Equações em LaTeX”.

  • Equação centralizada: Envolver a equação por dois $.

\[{\text{Média}=\frac {a_{1}+a_{2}+\cdots +a_{n}}{n}}\]

  • Equação junto ao texto: Envolver a equação por um $.

Ou também na linha \({\text{Média}=\frac {a_{1}+a_{2}+\cdots +a_{n}}{n}}\), junto ao texto!

Código Markdown:

$${\text{Média}=\frac {a_{1}+a_{2}+\cdots +a_{n}}{n}}$$

Adicionar referências

  • Podemos adicionar referências no texto usando um arquivo .bib.

  • Podemos gerar um arquivo .bib usando um gerenciador de referências. Eu utilizo o Zotero, a extensão Better Bibtex for Zotero e a extensão do Zotero para o navegador.

  • No arquivo .bib, cada referência deverá ter um rótulo, que usaremos para citar dentro do arquivo .qmd, precedido de @.

  • Devemos indicar os arquivos .bib no YAML do relatório. Exemplo em um caso com 2 arquivos diferentes:

bibliography: 
  - references.bib
  - packages.bib

Citar o R - Função citation()

> citation() 

To cite R in publications use:

  R Core Team (2021). R: A language and environment for
  statistical computing. R Foundation for Statistical
  Computing, Vienna, Austria. URL https://www.R-project.org/.

A BibTeX entry for LaTeX users is

  @Manual{,
    title = {R: A Language and Environment for Statistical Computing},
    author = {{R Core Team}},
    organization = {R Foundation for Statistical Computing},
    address = {Vienna, Austria},
    year = {2021},
    url = {https://www.R-project.org/},
  }

We have invested a lot of time and effort in creating R,
please cite it when using it for data analysis. See also
‘citation("pkgname")’ for citing R packages.

Citar pacotes

  • Podemos gerar um .bib com as referências de pacotes utilizados usando a função knitr::write_bib():
pacotes <- c("tidyverse")
knitr::write_bib(pacotes, # pacotes para gerar a referencia
                 # local para salvar o arquivo
                 'packages.bib')

Exemplo do packages.bib gerado

@Manual{R-tidyverse,
  title = {tidyverse: Easily Install and Load the Tidyverse},
  author = {Hadley Wickham},
  year = {2021},
  note = {R package version 1.3.1},
  url = {https://CRAN.R-project.org/package=tidyverse},
}

@Article{tidyverse2019,
  title = {Welcome to the {tidyverse}},
  author = {Hadley Wickham and Mara Averick and Jennifer Bryan and Winston Chang and Lucy D'Agostino McGowan and Romain François and Garrett Grolemund and Alex Hayes and Lionel Henry and Jim Hester and Max Kuhn and Thomas Lin Pedersen and Evan Miller and Stephan Milton Bache and Kirill Müller and Jeroen Ooms and David Robinson and Dana Paige Seidel and Vitalie Spinu and Kohske Takahashi and Davis Vaughan and Claus Wilke and Kara Woo and Hiroaki Yutani},
  year = {2019},
  journal = {Journal of Open Source Software},
  volume = {4},
  number = {43},
  pages = {1686},
  doi = {10.21105/joss.01686},
}

Como citar no .qmd

  • Formas de usar os rótulos gerados no arquivo .qmd:
forma_de_citar resultado
@tidyverse2019 Wickham et al. (2019)
[@tidyverse2019; @R-tidyverse] (Wickham et al. 2019; Wickham 2021)
Em -@tidyverse2019, Hadley e colaboradores… Em 2019, Hadley e colaboradores…
Segundo Hadley Wickham e colaboradores [-@tidyverse2019] Segundo Hadley Wickham e colaboradores (2019)

Formatação das referências

  • O conteúdo do arquivo .bib é formatado a partir de um arquivo .csl (Citation Style Language).

  • Devemos informar caminho até o arquivo CSL no YAML, por exemplo:

csl: template/abnt.csl

Referências cruzadas

Figuras, tabelas, equações, seções:

  • Usamos o rótulo do chunk (ou nome) onde a tabela ou imagem foi criada para fazer a referência cruzada.
    • Ex: @fig-rotulo-da-imagem , @tbl-rotulo-da-tabela, @eq-rotulo-da-equacao, @sec-rotulo-da-secao.
  • Não é necessário escrever a palavra “Tabela” ou “Figura”.
  • Nas opções de chunk, adicionar #| label: fig-rotulo-da-imagem
  • Sempre adicionar uma legenda para sua figura ou tabela: #| tbl-cap: Descrição da tabela. ou #| fig-cap: Descrição da imagem.
  • Para mudar de “Table” para “Tabela”, coloque lang: pt no YAML do arquivo.

Referências cruzadas

Capítulos/seções

  • Adicionar um rótulo para o capítulo, que deverá ser escrito logo após a cabeçalho (que delimitamos com #, ##, etc).
    • Ex: ## Minha seção {#sec-minha-secao}
    • Na @sec-minha-secao, vimos que …
  • Obs: No RMarkdown, isso só funciona com outputs que são derivados do pacote {bookdown}. Ex: bookdown::html_document2, bookdown::word_document2