[1] "/Users/beatrizmilz/Documents/IME-Verao/2024-curso-de-verao-ime-usp-relatorios"
Relatórios reprodutíveis com R - Curso de Verão IME-USP 2024
O que vamos aprender:
O que é reprodutibilidade?
O que são projetos no RStudio, e qual é a importância de usá-los?
O que são caminhos relativos e absolutos?
Como desabilitar a funcionalidade do RStudio que armazena automaticamente os objetos e o histórico?
“É um conceito que não tem uma definição única e comum”. (Gundersen, 2021)
“Para alguém fazer uma afirmação científica legítima, ele deve ser capaz de reproduzir totalmente seus resultados a partir de seus dados brutos (e de preferência outros devem ser capazes de reproduzi-los também)”. Dr. John Paul Helveston
Quais fatores contribuem com pesquisa não reprodutível? Fonte: Baker (2016)
“Reprodutibilidade é como escovar os dentes. Isso é bom para você, mas leva tempo e esforço. Depois de aprender, torna-se um hábito.” - Irakli Loladze, Bryan College of Health Sciences em Lincoln, Nebraska.
Baker, M. 1,500 scientists lift the lid on reproducibility. Nature 533, 452–454 (2016). https://doi.org/10.1038/533452a
Boas práticas, como: não usar caracteres especiais nos caminhos, variáveis, nomes de coluna, etc; armazenar os arquivos de forma consistente.
Registrar a versão do R e dos pacotes utilizados
Documentar a análise
Controlar a versão dos arquivos
Outras referências interessantes:
O RStudio permite a criação de Projetos.
O projeto é uma pasta no computador, onde devemos armazenar todos os arquivos usados ou criados em uma análise. Essa pasta irá conter também um arquivo com o nome do projeto e a extensão .Rproj
.
Para cada análise, lembre-se de criar um .Rproj
correspondente.
Criando um projeto em uma nova pasta:
File > New Project > New Directory > New Project
Dê um nome para seu projeto (será o nome da pasta), escolha a pasta no seu computador, e clique em Create Project
.
O diretório de trabalho é a pasta em que o R irá:
Quando usamos Projetos do RStudio, o nosso diretório de trabalho é a pasta principal do projeto.
A função getwd()
serve para conferir o diretório de trabalho:
setwd()
serve para alterar o diretório de trabalho. NÃO É RECOMENDADO O USO! Isso torna o código não reprodutível.Caminhos são textos que representam o endereço do arquivo no computador.
É muito importante entender como funcionam! Caso contrário, ficará difícil fazer coisas como importar dados para o R.
Caminhos podem ser relativos ou absolutos.
Caminhos absolutos: tem início na pasta raiz do seu computador/usuário. NÃO É RECOMENDADO O USO! Isso torna o código não reprodutível.
Caminhos relativos: tem início no diretório de trabalho da sessão. Caso você esteja usando projetos, os caminhos relativos tem início na pasta inicial do projeto.
Utilize sempre que possível caminhos relativos.
Exemplos acessando o mesmo arquivo:
"/Users/beatrizmilz/GitHub/2023-curso-de-verao-ime-usp-relatorios/docs/slides/images/rprojs.png"
"docs/slides/images/rprojs.png"
O pacote here
também possui funções úteis para escrever caminhos:
Em sua configuração padrão, a IDE manterá na “memória” todos os últimos comandos executados, todos os dados utilizados e todos os objetos criados.
Ao fechar e abrir o RStudio, essas informações serão recarregadas na memória como se o usuário nunca tivesse saído do programa. Esse recurso é tornado possível pela criação de dois arquivos ocultos: .RData
e .Rhistory
.
O primeiro abriga absolutamente todos os objetos criados por uma sessão R, enquanto o segundo contém uma lista com os últimos comandos executados.
Ao reabrir o RStudio, o conteúdo armazenados nestes arquivos será carregado no ambiente de trabalho atual como se nada tivesse acontecido.
Leia mais neste capítulo do livro Zen do R
Se todos os resultados parciais de uma análise estiverem disponíveis a qualquer momento, diminui o incentivo para a escrita de código reprodutível
Ao dependermos ativamente do .Rdata
, se acidentalmente sobrescrevemos um objeto relevante e o código para recriá-lo não estiver mais acessível, não haverá nenhuma forma confiável de recuperá-lo.
O R trata todos os objetos guardados na memória igualmente. Isso significa que ele também irá armazenar nos arquivos ocultos todas as bases de dados da sessão. Assim, o .RData
pode ser um arquivo de múltiplos gigabytes
Crie um projeto no RStudio para armazenar o que vamos criar durante o curso. Salve em algum lugar no seu computador que seja fácil de encontrar.
Desabilite o .RData e .Rhistory no seu RStudio
Execute o seguinte código no console, verifique o resultado: devtools::session_info()
Dentro do projeto criado, crie uma pasta chamada “dados”, e salve o seguinte arquivo na mesma: clique aqui para baixar o arquivo pinguins.csv
Dados originais: https://allisonhorst.github.io/palmerpenguins/
Dados traduzidos para Português: https://cienciadedatos.github.io/dados/
─ Session info ───────────────────────────────────────────────────────────────
setting value
version R version 4.2.1 (2022-06-23)
os macOS Monterey 12.7.1
system aarch64, darwin20
ui X11
language (EN)
collate en_US.UTF-8
ctype en_US.UTF-8
tz America/Sao_Paulo
date 2024-02-24
pandoc 3.1.1 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/ (via rmarkdown)
─ Packages ───────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
cachem 1.0.8 2023-05-01 [1] CRAN (R 4.2.0)
callr 3.7.3 2022-11-02 [1] CRAN (R 4.2.0)
cli 3.6.2 2023-12-11 [1] CRAN (R 4.2.3)
crayon 1.5.2 2022-09-29 [1] CRAN (R 4.2.0)
devtools 2.4.5 2022-10-11 [1] CRAN (R 4.2.0)
digest 0.6.33 2023-07-07 [1] CRAN (R 4.2.0)
ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.2.0)
evaluate 0.23 2023-11-01 [1] CRAN (R 4.2.0)
fastmap 1.1.1 2023-02-24 [1] CRAN (R 4.2.0)
fs 1.6.3 2023-07-20 [1] CRAN (R 4.2.0)
glue 1.7.0 2024-01-09 [1] CRAN (R 4.2.3)
here 1.0.1 2020-12-13 [1] CRAN (R 4.2.0)
htmltools 0.5.7.9000 2023-11-14 [1] Github (rstudio/htmltools@7efa2d8)
htmlwidgets 1.6.2 2023-03-17 [1] CRAN (R 4.2.0)
httpuv 1.6.12 2023-10-23 [1] CRAN (R 4.2.0)
jsonlite 1.8.8 2023-12-04 [1] CRAN (R 4.2.3)
knitr 1.45 2023-10-30 [1] CRAN (R 4.2.0)
later 1.3.1 2023-05-02 [1] CRAN (R 4.2.0)
lifecycle 1.0.4 2023-11-07 [1] CRAN (R 4.2.1)
magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.2.0)
memoise 2.0.1 2021-11-26 [1] CRAN (R 4.2.0)
mime 0.12 2021-09-28 [1] CRAN (R 4.2.0)
miniUI 0.1.1.1 2018-05-18 [1] CRAN (R 4.2.0)
pkgbuild 1.4.2 2023-06-26 [1] CRAN (R 4.2.0)
pkgload 1.3.3 2023-09-22 [1] CRAN (R 4.2.0)
prettyunits 1.2.0 2023-09-24 [1] CRAN (R 4.2.0)
processx 3.8.2 2023-06-30 [1] CRAN (R 4.2.0)
profvis 0.3.8 2023-05-02 [1] CRAN (R 4.2.0)
promises 1.2.1 2023-08-10 [1] CRAN (R 4.2.0)
ps 1.7.5 2023-04-18 [1] CRAN (R 4.2.0)
purrr 1.0.2 2023-08-10 [1] CRAN (R 4.2.0)
R6 2.5.1 2021-08-19 [1] CRAN (R 4.2.0)
Rcpp 1.0.11 2023-07-06 [1] CRAN (R 4.2.0)
remotes 2.4.2.1 2023-07-18 [1] CRAN (R 4.2.0)
rlang 1.1.3 2024-01-10 [1] CRAN (R 4.2.3)
rmarkdown 2.25 2023-09-18 [1] CRAN (R 4.2.0)
rprojroot 2.0.4 2023-11-05 [1] CRAN (R 4.2.1)
rstudioapi 0.15.0 2023-07-07 [1] CRAN (R 4.2.0)
sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.2.0)
shiny 1.7.5.1 2023-10-14 [1] CRAN (R 4.2.0)
stringi 1.8.3 2023-12-11 [1] CRAN (R 4.2.3)
stringr 1.5.1 2023-11-14 [1] CRAN (R 4.2.3)
urlchecker 1.0.1 2021-11-30 [1] CRAN (R 4.2.0)
usethis 2.2.2 2023-07-06 [1] CRAN (R 4.2.0)
vctrs 0.6.5 2023-12-01 [1] CRAN (R 4.2.3)
xfun 0.41 2023-11-01 [1] CRAN (R 4.2.0)
xtable 1.8-4 2019-04-21 [1] CRAN (R 4.2.0)
yaml 2.3.8 2023-12-11 [1] CRAN (R 4.2.3)
[1] /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library
──────────────────────────────────────────────────────────────────────────────
Em um código reprodutível, devemos ser capazes de reproduzir totalmente os resultados a partir dos dados brutos, assim como outras pessoas (em computadores diferentes) também devem ser capazes de reproduzir esses mesmos resultados a partir dos dados brutos.
Utilizar boas práticas aumentam as chances de escrever um código reprodutível.
Utilizar Projetos do RStudio. Quando usamos projetos do RStudio, o diretório de trabalho será a pasta principal do projeto.
Desabilitar o .Rhistory e .Rdata.
Utilizar caminhos relativos.
Documentar os pacotes e versões utilizadas.
Slides por Beatriz Milz (@BeaMilz), feito com Quarto. Código disponível no GitHub.