Manuscritos e relatórios de pesquisa computacionalmente reproduzíveis com R Markdown

R Markdown é uma simples sintaxe de formatação para autoria de documentos HTML, PDF e MS Word que consegue integrar texto e código de diferentes linguagens como R e Python, possibilitando a manipulação de dados, análise estatística, escrita e visualização num único ambiente. Isto faz do R Markdown um modelo para a reprodutibilidade na análise de dados. Como exemplo da versatilidade do R Markdown, criei o presente website usando o pacote do R chamado blogdown, que utiliza R Markdown para criar websites.

Preparei uma aula introdutória de R Markdown conforme podem conferir no vídeo abaixo.

Durante a aula, apresentei alguns documentos que utilizei como exemplo. Parte do código source está disponível abaixo.


# Sintaxe Markdown

Texto simples.

Termine uma linha com dois espaços para começar um novo parágrafo.  

*itálico* e **negrito**

ou

_itálico_ e __negrito__

~~tachado~~

escape de caracteres especiais: \* \_ \\

subscrito~2~ e sobrescrito^2^

traço: --  

travessão: ---

elipse: ...

# Cabeçalho 1
## Cabeçalho 2
### Cabeçalho 3
#### Cabeçalho 4
##### Cabeçalho 5
###### Cabeçalho 6

- lista não ordenada
- item 2
  - item 2a (observe a identação com 1 tab)
  - item 2b
  
1. lista ordenada
2. item 2
2. item 3
    1. item 2a (observe a identação com 2 tab)
    2. item 2b


Tabela em linha:

|  Cabeçalho da esquerda|  cabeçalho do centro|  cabeçalho da direita|
|:--|--:|--:|
|  célula 1|  célula 2|  célula 3|
|  célula 4|  célula 5|  célula 6|

régua horizontal (ou quebra de slide):  

***  

> citação em bloco

![Legenda da imagem](rmarkdown_logo.png){width=25%}

^[nota de rodapé]

`código em texto`

equação: $A = \pi \times r^2$

equação em bloco:
$$
E = mc^2
$$

<http://www.rstudio.com/>

[Isto é um link.](http://www.rstudio.com/)

A documentação das opções de chunk pode ser encontrada no endereço https://yihui.org/knitr/options/.

Também podemos adicionar chunks de código de outras linguagens além de R. Abaixo iremos utilizar a linguagem Python através do pacote reticulate.

# Carregando o pacote reticulate
library(reticulate)
# O reticulate usa a versão do Python especificada no PATH
Sys.which("python")
# Especificando uma versão de Python alternativa
use_python("/usr/local/bin/python")
from plotnine import *
ggplot(r.cars, aes(x = 'speed', y = 'dist')) + geom_point()

Citações e referências

O ano era 2019 e eu estava começando o meu mestrado. Entre uma leitura e outra, tive contato com o inspirador artigo de @Tippmann2015 e decidi estudar a linguagem de programação R.  

Se quiserem saber um pouco mais sobre a história do R, leia o artigo original de @Ihaka1996.  

R seria a *melhor ferramenta para visualização de dados que o dinheiro pode pagar*, mas ele é gratuito. @Brennan2021 apresenta um pouco do potencial da linguagem R para visualização de dados na perspectiva de um bioquímico.  

![](how-i-met-tidy.png){width=75%}

Você precisa conhecer o tidyverso [@Wickham2019].  

Ferramentas para produção de manuscritos computacionalmente reproduzíveis estão se tornando cada vez mais relevantes na pesquisa científica [@Perkel2022]. O R Markdown está entre as principais ferramentas da categoria e nele já podemos contar com templates para alguns dos principais veículos de publicação científica, como a Elsevier [@Baumer2015; @Holmes2021].  

O ano era 2019 e eu estava começando o meu mestrado. Entre uma leitura e outra, tive contato com o inspirador artigo de TIPPMANN (2015) e decidi estudar a linguagem de programação R.

Se quiserem saber um pouco mais sobre a história do R, leia o artigo original de IHAKA; GENTLEMAN (1996).

R seria a melhor ferramenta para visualização de dados que o dinheiro pode pagar, mas ele é gratuito. BRENNAN (2021) apresenta um pouco do potencial da linguagem R para visualização de dados na perspectiva de um bioquímico.

Você precisa conhecer o tidyverse (WICKHAM et al., 2019).

Ferramentas para produção de manuscritos computacionalmente reproduzíveis estão se tornando cada vez mais relevantes na pesquisa científica (PERKEL, 2022). O R Markdown está entre as principais ferramentas da categoria e nele já podemos contar com templates para alguns dos principais veículos de publicação científica, como a Elsevier (BAUMER; UDWIN, 2015; HOLMES; MOBINI; MCCUDDEN, 2021).

Repositório do Zotero

No cabeçalho YAML desse Rmd notebook podemos notar a opção csl, onde especifiquei o arquivo ‘abnt.csl’. A opção define o estilo das citações e referências. No caso, utilizei uma versão atualizada da ABNT. Esse arquivo e muitos outros podem ser baixados no Zotero Style Repository (https://www.zotero.org/styles).

Plugins e atalhos

O pacote remedy oferece alguns atalhos na forma de opções no plugin Addins do RStudio.

install.packages("remedy")

Os atalhos do remedy estarão disponíveis no botão Addins do RStudio.

Atalhos de teclado também facilitam a redação e utilização de documentos Rmd de maneira eficiente. Abaixo segue uma lista deles.

Tarefa Windows e Linux macOS
Inserir chunk de código Ctrl+Alt+I Command+Option+I
Prévia HTML Ctrl+Shift+K Command+Shift+K
Knitar documento (knitr) Ctrl+Shift+K Command+Shift+K
Compilar documento Ctrl+Shift+K Command+Shift+K
Rodar todos os chunks acima Ctrl+Alt+P Command+Option+P
Rodar o chunk atual Ctrl+Alt+C Command+Option+C
Rodar o chunk atual Ctrl+Shift+Enter Command+Shift+Enter
Rodar o próximo chunk Ctrl+Alt+N Command+Option+N
Rodar todos os chunks Ctrl+Alt+R Command+Option+R
Ir para o próximo chunk/título Ctrl+PgDown Command+PgDown
Ir para o chunk/título anterior Ctrl+PgUp Command+PgUp
Exibir/esconder conteúdos do documento Ctrl+Shift+O Command+Shift+O
Criar livro, website, … Ctrl+Shift+B Command+Shift+B

Aparência e formatação

O pacote bslib facilita a customização da aparência dos documentos R Markdown tornando-a o mais fácil possível e fornecendo temas prontos.

install.packages("bslib")

Aprenda mais sobre o pacote em https://pkgs.rstudio.com/bslib/.

Referências

BAUMER, Benjamin; UDWIN, Dana. R Markdown. Wiley Interdisciplinary Reviews: Computational Statistics, [S. l.], v. 7, n. 3, p. 167–177, 2015. DOI: 10.1002/wics.1348. Disponível em: https://arxiv.org/abs/1501.01613.
BRENNAN, Paul. Data visualization with the programming language R. The Biochemist, [S. l.], v. 43, n. 5, p. 8–14, 2021. DOI: 10.1042/bio_2021_174.
HOLMES, Daniel T.; MOBINI, Mahdi; MCCUDDEN, Christopher R. Reproducible manuscript preparation with RMarkdown application to JMSACL and other Elsevier Journals. Journal of Mass Spectrometry and Advances in the Clinical Lab, [S. l.], v. 22, p. 8–16, 2021. DOI: 10.1016/j.jmsacl.2021.09.002. Disponível em: https://doi.org/10.1016/j.jmsacl.2021.09.002.
IHAKA, Ross; GENTLEMAN, Robert. R: a language for data analysis and graphics. Journal of Computational and Graphical Statistics, [S. l.], v. 5, n. 3, p. 299–314, 1996.
PERKEL, Jeffrey M. Cut the tyranny of copy-and-paste with these coding tools. Nature, [S. l.], v. 603, n. 7899, p. 191–192, 2022. DOI: 10.1038/d41586-022-00563-z.
TIPPMANN, Sylvia. Programming tools: adventures with R. Nature, [S. l.], v. 517, n. 7532, p. 109–110, 2015. DOI: 10.1038/517109a.
WICKHAM, Hadley et al. Welcome to the Tidyverse. Journal of Open Source Software, [S. l.], v. 4, n. 43, p. 1686, 2019. DOI: 10.21105/joss.01686.
João Pedro Fernandes Queiroz
João Pedro Fernandes Queiroz
Doctoral researcher

I am a Brazilian living and researching in Germany. I am interested in protein evolution and engineering, R programming language, data science, and bioinformatics. I am a cyclist in my free time.