Aula sobre o Rmarkdown

Cristiano de Carvalho Santos

Departamento de Estatística, UFMG

Introdução

Este é um documento R Markdown. Markdown é uma sintaxe de formatação simples para criação de documentos HTML, PDF e MS Word. Para mais detalhes sobre o uso do R Markdown veja http://rmarkdown.rstudio.com.


Com o Rmarkdown podemos fazer:


Muita coisa pode ser encontrada em:

Quando você clica no botão Knit um documento será gerado, incluíndo a saída de qualquer pedaço de código R. Você pode incorporar um pedaço de código R assim:

##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00

ou

par(mar=c(5,5,1,0))
plot(pressure)

Como criar um arquivo do Rmarkdown

Após abrir o RStudio, basta ir em:

  1. File > New File > R Markdown.
  2. Escolher o tipo de documento, o formato do output e preencher título e autor.
  3. Um exemplo será criado automaticamente com alguns comandos básicos.
  4. Após salvar, o documento pode ser gerado utilizando o botão Knit.
  5. Algumas configurações podem ser alteradas na engrenagem ao lado do knit.

O texto pode ser digitado diretamente, mas para inserir código do R é necessário ir em:

  1. Opção Insert
  2. Escolher as configurações desejadas. É possível:
    • Exibir código e resultado
    • Exibir apenas um deles
    • Exibir código e não rodar
    • Rodar código sem exibir resultados
    • Incluir gráficos ajustando o tamanho



# Use message= FALSE, warning = FALSE para não imprimir mensagens que o r solta no console
# coloque algo assim ```{r echo=TRUE, message=FALSE, warning=FALSE}

Cabeçalhos

Título 2

Título 3

Para definir seções e subseções em um relatório podemos utilizar #. Os títulos acima são obtidos com

# Cabeçalhos

## Título 2

### Título 3

Em uma apresentação, as seções definem os slides. Por exemplo, se quer mudar de slide e nao definir uma nova seção basta colocar # em uma linha sem acrescentar nenhum texto na mesma linha.



Linha em branco para aumentar o espaçamento vertical podem ser incluidas com o comando \

Listas

Para lista numerada use 1. e para sublista basta dar mais espaços

  1. Relaciona um item na lista:
    • Recuo de quatro espaços.
      • recuo de oito espaços.

Figuras

Para obter uma figura que utilize toda a largura da página basta acrescentar a opção fig.fullwidth = TRUE e podemos acrescentar título com fig.cap = "Figura 1: Full width figure".

Figura 1: Full width figure

Figura 1: Full width figure

Equações

Você pode incluir equações em linguagem . Por exemplo:

\[\frac{d}{dx}\left( \int_{0}^{x} f(u)\,du\right)=f(x).\] é gerado com $$\frac{d}{dx}\left( \int_{0}^{x} f(u)\,du\right)=f(x).$$

ou

\begin{equation}

\frac{d}{dx}\left( \int_{0}^{x} f(u)\,du\right)=f(x).

\end{equation}


Mais exemplos em:

Tabelas

Digitando toda a tabela podemos fazer

| Tables | Are | Cool |

| ------------- |:-------------:| ------:|

| col 3 is | right-aligned | 1600 |

| col 2 is | centered | 12 |

| zebra stripes | are neat | 1 |



Tables Are Cool
col 3 is right-aligned 1600
col 2 is centered 12
zebra stripes are neat 1


Obs: O aspecto da tabela muda para cada tipo de documento a ser criado.

Com o pacote knitr

# Com o kable
n <- 100
x <- rnorm(n)
y <- 2*x + rnorm(n)
out <- lm(y ~ x)
#Necessario instalar o pacote antes!!!
library(knitr)
kable(summary(out)$coef, digits=2, format = "markdown")
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.09 0.1 0.90 0.37
x 1.85 0.1 18.18 0.00

# Vejam o help da função kable
x = matrix(rnorm(40), 5)
dimnames(x) = list(head(c("G1","G2","G3","G4","G5")), head(LETTERS, ncol(x)))
knitr::kable(x, digits = 2, caption = "Montando uma tabela a partir de uma matriz.")
Montando uma tabela a partir de uma matriz.
A B C D E F G H
G1 0.65 0.59 0.14 -0.50 0.61 -0.42 -0.22 0.59
G2 0.61 0.57 0.26 0.35 0.35 0.15 -0.62 -1.06
G3 -0.37 0.15 0.67 -0.33 -1.44 0.51 0.09 0.53
G4 0.06 0.15 0.27 -0.16 -0.67 -1.63 -0.24 -1.55
G5 0.83 0.53 -1.04 2.13 0.15 -2.59 -0.41 -1.52

x1 = sample(letters[1:3], 1000, TRUE)
x2 = sample(letters[1:3], 1000, TRUE)
x3 = sample(letters[1:3], 1000, TRUE)
tab =table(x1, x2)
knitr::kable(tab, digits = 2, caption = "Também é possível com o table")
Também é possível com o table
a b c
a 112 98 124
b 97 113 108
c 131 106 111

Utilizando o Pander

# Com o pander
x = matrix(rnorm(40), 5)
dimnames(x) = list(NULL, head(LETTERS, ncol(x)))
library(pander)
## Warning: package 'pander' was built under R version 3.4.4
panderOptions("digits", 2)
pander(x)
A B C D E F G H
-1 0.34 -0.41 -1.3 -2.2 -1.3 -0.99 -1.9
-1.1 -0.65 0.95 1.7 -0.86 -1.4 -1.7 -0.0027
-0.56 -0.039 -0.46 0.52 -2 0.03 -1.2 0.92
-1.1 0.1 0.16 1 -1.4 0.037 -0.16 1.4
0.78 -0.37 1.4 0.39 -0.075 -0.4 0.22 1.2

Alguns detalhes de formatação

Dashboards

Alguns exemplos de Dashboards em:


Como fazer?

  1. Instale o pacote “flexdashboard”
  2. File > New File > R Markdown
  3. Escolha FROM TEMPLATE e Flex Dashboard
  4. Um exemplo será criado automaticamente com alguns comandos básicos

Outra opção é obter o código de um dashboard pronto e editar de acordo com os seus objetivos

Alguns sites que podem ser úteis