Controle de opções em pedaços de códigos

Quando utilizamos códigos R ou de qualquer outra linguagem passível de ser utilizada em documentos Rmd, temos a opção de controlar como esse código será processado durante a compilação. O responsável por esse controle é o pacote R knitr. Existem mais de 50 controles possíveis, dos quais apresentamos apenas os principais [a meu humilde ver] abaixo.

Exibição do código

Os códigos escritos nas diversas linguagens possíveis de serem utilizadas em arquivos Rmd podem ser controlados quanto à exibição no produto final e também quanto aos efeitos dos códigos. Exemplificarei alguns dos argumentos mais utilizados:

  • echo

  • eval

  • include

  • message

  • warning

# echo
```{r echo = FALSE}
library("MASS")
```
# eval
```{r eval = FALSE}
plot(long, lat, data = coordenadas)
```
# include
```{r include = FALSE}
library("dplyr")
library("purrr")
library("vegan")
```
# message
```{r message = FALSE}
library("dplyr")
library("purrr")
library("vegan")
```
# warning
```{r warning = FALSE}
library("palmerpenguins")
library("ggplot2")

ggplot(penguins) +
  geom_point(aes(x = bill_length_mm, y = bill_depth_mm, color = species)) +
  theme_bw()
```

Controle de figuras

Podemos controlar como as figuras aparecerão em nossos produtos por meio dos argumentos YAML a seguir:

  • fig_width e fig_height controlam, respectivamente, a largura e altura da imagem;

  • fig_caption controla se as figuras devem ser compiladas com ou sem legendas (valores possíveis true ou false)

  • dev controla qual dispositivo deve compilar as figuras, isto é, se pdf, png, ou outros (padrão é o png).

Vejam possibilidades abaixo e testem em seus arquivos:

---
title: "Análise exploratória de dados"
author: Guerreira Luaninha
date: 4 Jun 2024
output: 
  html_document:
    fig_width: 7
    fig_height: 6
    fig_caption: true
---

Outra maneira de controlar a aparência das figuras é por meio de argumentos dentro dos pedaços de código. Os argumentos disponíveis são escritos de maneira parecida com os argumentos utilizados no YAML, porém diferem quanto à inserção de um ponto (.) no lugar do subtraço (_). As opções mais populares são:

  • fig.height e fig.width, que determinam a altura e a largura da figura em polegadas, respectivamente. Os valores devem ser numéricos. Exemplo: fig.width = 8, fig.height = 4.

  • fig.dim que combina a largura e a altura da figura, respectivamente, na mesma função, também expressa em polegadas. Exemplo: fig.dim = c(8, 4) é o mesmo que `fig.width = 8, fig.height = 4.

  • fig.cap, que determina a legenda da figura. Deve apresentar sempre o texto que se deseja colocar entre aspas. Exemplo: fig.cap = "Essa é a legenda de minha figura.".

  • out.width e out.height, que expressa o tamanho da imagem no produto final, cujos valores são expressos em porcentagens, “50%”, “70%” etc. Exemplo: out.width = "50%", out.height = "80%".

Exemplos de aplicação desses argumentos são expressos abaixo:

# Usando fig.width e fig.height
```{r, fig.width = 12, fig.height = 10, fig.cap="Olha a legenda da figura"}
knitr::include_graphics("fotinha.jpg")
```
# out.width e out.height
```{r, out.width="50%", out.height = "50%"}
knitr::include_graphics("fotinha.jpg")
```
# fig.dim
```{r, fig.dim = c(12,10)}
knitr::include_graphics("fotinha.jpg")
```

Mais opções estão explicadas detalhadamente na seção Plots da página dedicada ao pacote knitr ().

Listagem dos principais argumentos disponíveis

Disponibilizo abaixo uma lista de argumentos, com suas opções disponíveis e o que cada argumento é responsável. Agrupei-as em torno da ação executada referente ao código: avaliação, resultado, decoração, cache e controle de figuras.

Avaliação do código

Argumento Opções O que faz
child NULL Um vetor de nomes de arquivos `.Rmd`. O `knitr` compila esses arquivos e insere seu conteúdo no ponto correspondente do documento principal.
code NULL Permite substituir o código por outro fornecido como string. Útil para gerar código dinamicamente antes da execução.
engine Nome da linguagem Define a linguagem usada para executar o código. Por padrão é 'R', mas também pode ser 'python', 'bash', 'sql', entre outros.
eval TRUE ou FALSE Controla se o código deve ou não ser executado durante a renderização.
include TRUE ou FALSE Se `FALSE`, o código é executado, mas tanto o código quanto seus resultados são omitidos do documento final.
purl TRUE ou FALSE Se `FALSE`, este pedaço de código será ignorado quando o código for extraído usando `knitr::purl()`.

Resultado

Argumento Opções O que faz
collapse TRUE ou FALSE Se `TRUE`, o código-fonte e os resultados gerados pelo pedaço de código serão agrupados em um único bloco no documento final.
echo TRUE ou FALSE Controla se o código será exibido no documento. Se `FALSE`, o código é ocultado, mas ainda pode ser executado.
results 'markup', 'hide', 'hold', 'asis' 'hide': oculta os resultados do código; 'hold': exibe todos os resultados juntos ao final do pedaço; 'asis': insere os resultados diretamente, sem formatação adicional.
error TRUE ou FALSE Se `TRUE`, mensagens de erro geradas durante a execução do código serão exibidas no documento.
message TRUE ou FALSE Se `TRUE`, mensagens informativas (como as de pacotes carregados) serão exibidas no documento.
warning TRUE ou FALSE Se `TRUE`, mensagens de alerta (warnings) geradas durante a execução do código serão mostradas no documento.

Decoração

Argumento Opções O que faz
comment '##' Texto que será inserido no início de cada linha dos resultados exibidos. Por exemplo, `comment = '##'` prefixa cada linha com '##'.
highlight TRUE ou FALSE Controla se o código será realçado (syntax highlighting) no documento final. Relevante apenas para alguns formatos de saída.
prompt TRUE ou FALSE Se `TRUE`, adiciona o símbolo `'>'` no início de cada linha de código, simulando o prompt interativo do R.
strip.white TRUE ou FALSE Remove espaços em branco extras no início e/ou no fim do pedaço de código antes de ser exibido.
tidy TRUE ou FALSE Organiza (indenta) automaticamente o código para deixá-lo mais legível, usando a função `formatR::tidy_source()`.

Cache

Argumento Opções O que faz
cache TRUE ou FALSE `knitr` armazena os resultados do bloco para reutilizá-los em futuras execuções, desde que o código não mude.
cache.comments NULL Se `FALSE`, comentários não são levados em conta e o pedaço de código não será reexecutado se apenas eles forem alterados.
cache.path 'cache/' Diretório onde os resultados do cache serão salvos. Caminho relativo ao arquivo `.Rmd`.
cache.vars NULL Permite indicar nomes específicos de objetos a serem armazenados no cache, ao invés de todos.

Controle de figuras

Argumento Opções O que faz
dev 'png' Nome da função gráfica usada para gerar imagens, como `png()` ou `CairoPDF()`.
dpi 72 Define a resolução (pontos por polegada) das imagens geradas.
fig.align 'default' Alinhamento das figuras no documento final: 'left', 'right' ou 'center'.
fig.cap NULL Texto usado como legenda da figura em LaTeX.
fig.ext NULL Extensão do arquivo de imagem gerado, como 'png' ou 'pdf'.
fig.height 7 Altura da figura (em polegadas).
fig.width 7 Largura da figura (em polegadas).
fig.pos '' Código LaTeX para definir a posição da figura no documento.
fig.show 'asis' Controla quando e como as figuras são exibidas: 'hide', 'hold', 'animate' ou 'asis'.
out.height NULL Altura final da imagem no documento (pode usar unidades como '50px' ou '8\linewidth').
out.width NULL Largura final da imagem no documento.