Garantindo a reprodutibilidade das funções: {renv
}
A grande sacada do {renv
} para garantir a
reprodutibilidade das funções dos pacotes utilizados é que ele instala
estas dependências numa pasta específica do projeto que contém tais
dependência. Desta forma, ao utilizar um projeto de outra pessoa, ou o
seu próprio projeto no futuro, você irá utilizar as mesmas versões dos
pacotes.
{renv
} na prática
Quatro funções são essenciais para utilizar o pacote
{renv
}. Lembre-se sempre faça isso dentro de um
projeto
renv::init()
primeira ação a ser realizada para
iniciar o uso do pacote no seu projeto.
renv::status()
confere o status das dependências
contidas no seu projeto
renv::snapshot()
utilize essa função toda vez que
instalar um pacote novo, isso garantirá que a versão deste pacote estará
registrada nos arquivos especiais criados pelo
{renv
}
renv::restore()
esta função é utilizada quando você
quiser reproduzir algum projeto. Por exemplo, ao baixar um projeto do
GitHub abra a imagem do Rproject e utilize a função
restore()
isso irá desencadear a instalação das versões dos
pacotes utilizadas no projeto em seu computador, garantindo assim a
reprodutibilidade
Garantindo a reprodutibilidade das funções:
{groundhog
}
Outra opção é o ótimo pacote {groundhog
}, que exerce
funções similares ao renv
mas, tecnicamente, de maneiras
distintas. O objetivo final é o mesmo, aumentar a chance de
reprodutibilidade de códigos em R ao resolver a compatibilidade de
versões de pacotes estatísticos utilizados nestes scripts.
A grande diferença entre o pacote {renv
} e o
{groundhog
} é o fato de que o segundo funciona isoladamente
em scripts, enquanto o primeir, necessariamente, faz uso dos projetos no
R.
{groundhog
} na prática
Para utilizar o {groundhog
} devemos chamar as
dependências (pacotes) utilizando uma função do groundhog da seguinte
maneira
library(groundhog)
groundhog.day="2020-11-01"
pkgs=c('pwr','metafor','data.tables')
groundhog.library(pkgs, groundhog.day)
Ou seja, utilizamos dois argumentos na função
groundhog.library
um indicando os pacotes que devem ser
carregados e um segundo, aí a grande diferença do groundhog, indicando
uma data de uso do pacote. Esta data funcionará para baixar a versão do
pacote mais recente tendo como referência a data indicada.
Exercício
Tente as duas formas de ler pacotes apresentadas nesta seção, veja o
que mudou (ou não) no seu diretório.
Leituras adicionais
Para mais informações sobre o pacote {renv
} veja este material.
Para mais informações sobre o {groundhog
} veja o blog escrito por um
dos desenvolvedores do pacote. A propósito, o blog Data Colada é uma fonte sensacional
de ideias e discussões sobre ciência, reprodutibilidade e tudo o
mais.
LS0tCnRpdGxlOiAiTWFuZWphbmRvIHZlcnPDtWVzIGRlIHBhY290ZXMiCmF1dGhvcjogIkdhYnJpZWwgTmFrYW11cmEiCmRhdGU6ICJgciBTeXMuRGF0ZSgpYCIKb3V0cHV0OiBodG1sX2RvY3VtZW50Ci0tLQoKIyBDb21wYXRpYmlsaWRhZGUgY29tIHBhY290ZXMKCkF0w6kgYWdvcmEgYXByZW5kZW1vcyBjb21vIHJlZHV6aXIgb3MgZXJyb3MgY29tdW5zIGRlIHJlcHJvZHV0aWJpbGlkYWRlIGNvbXB1dGFjaW9uYWwgYXNzb2NpYWRvcyBhIGFycXVpdm9zIHByZXNlbnRlcyBubyBub3NzbyBkaXJldMOzcmlvLiBQb3LDqW0sIG5hIG1haW9yaWEgZG9zIHByb2pldG9zIG7Do28gdXRpbGl6YW1vcyBhcGVuYXMgYXJxdWl2b3MgcXVlIGVzdMOjbyBwcmVzZW50ZXMgbm8gZGlyZXTDs3JpbyBsb2NhbCBvdSByZW1vdG8sIHBvciBleGVtcGxvLCBvcyBwYWNvdGVzIQoKT3MgcGFjb3RlcyBzw6NvIGRpc3BvbmliaWxpemFkb3MgYWJlcnRhbWVudGUgZSBvIHF1ZSBmYXplbW9zIMOpIGJhaXhhciB1bWEgdmVyc8OjbyBkZXN0ZSBwYWNvdGUgZW0gbm9zc28gY29tcHV0YWRvci4gUG9yw6ltLCBwYWNvdGVzIG5lbSBzZW1wcmUgKG91IGEgbWFpb3JpYSBkYXMgdmV6ZXMpLCBmaWNhbSBkYSBtYW5laXJhIGNvbW8gb3MgYmFpeGFtb3MuIFBhY290ZXMgc8OjbyBlZGl0YWRvcyBwb3Igc2V1cyBwcm9wb25lbnRlcywgZnVuw6fDo28gaW50ZXJuYXMgc8OjbyBjb3JyaWdpZGFzLCBhbGd1bWFzIHPDo28gZXhjbHXDrWRhcywgb3V0cmFzIGFkaWNpb25hZGFzIGUgYWxndW1hcyB2ZXplcyBhdMOpIG1lc21vIG8gbm9tZSBkYSBmdW7Dp8OjbyDDqSBtb2RpZmljYWRvLiBNYXMgY29tbyBjb25zZWd1aW1vcyBnYXJhbnRpciBxdWUgbm9zc28gY8OzZGlnbyBzZWphIHJlcHJvZHV0w612ZWwsIHF1YW5kbyBlbGUgZGVwZW5kZSBkZSB1bWEgb3V0cmEgcGVzc29hIGF0dWFsaXphbmRvIGZ1bsOnw7VlcyBlIGRlcGVuZMOqbmNpYXMgbm9zIG5vc3NvcyBzY3JpcHRzPyBVbWEgZGFzIHNvbHXDp8O1ZXMgw6kgbyBwYWNvdGUge2ByZW52YH0KCiMgR2FyYW50aW5kbyBhIHJlcHJvZHV0aWJpbGlkYWRlIGRhcyBmdW7Dp8O1ZXM6IHtgcmVudmB9CgpBIGdyYW5kZSBzYWNhZGEgZG8ge2ByZW52YH0gcGFyYSBnYXJhbnRpciBhIHJlcHJvZHV0aWJpbGlkYWRlIGRhcyBmdW7Dp8O1ZXMgZG9zIHBhY290ZXMgdXRpbGl6YWRvcyDDqSBxdWUgZWxlIGluc3RhbGEgZXN0YXMgZGVwZW5kw6puY2lhcyBudW1hIHBhc3RhIGVzcGVjw61maWNhIGRvIHByb2pldG8gcXVlIGNvbnTDqW0gdGFpcyBkZXBlbmTDqm5jaWEuIERlc3RhIGZvcm1hLCBhbyB1dGlsaXphciB1bSBwcm9qZXRvIGRlIG91dHJhIHBlc3NvYSwgb3UgbyBzZXUgcHLDs3ByaW8gcHJvamV0byBubyBmdXR1cm8sIHZvY8OqIGlyw6EgdXRpbGl6YXIgYXMgbWVzbWFzIHZlcnPDtWVzIGRvcyBwYWNvdGVzLgoKIyMge2ByZW52YH0gbmEgcHLDoXRpY2EKClF1YXRybyBmdW7Dp8O1ZXMgc8OjbyBlc3NlbmNpYWlzIHBhcmEgdXRpbGl6YXIgbyBwYWNvdGUge2ByZW52YH0uIExlbWJyZS1zZSAqKnNlbXByZSBmYcOnYSBpc3NvIGRlbnRybyBkZSB1bSBwcm9qZXRvKioKCjEuIGByZW52Ojppbml0KClgIHByaW1laXJhIGHDp8OjbyBhIHNlciByZWFsaXphZGEgcGFyYSBpbmljaWFyIG8gdXNvIGRvIHBhY290ZSBubyBzZXUgcHJvamV0by4gCgoyLiBgcmVudjo6c3RhdHVzKClgIGNvbmZlcmUgbyBzdGF0dXMgZGFzIGRlcGVuZMOqbmNpYXMgY29udGlkYXMgbm8gc2V1IHByb2pldG8KCjMuIGByZW52OjpzbmFwc2hvdCgpYCB1dGlsaXplIGVzc2EgZnVuw6fDo28gdG9kYSB2ZXogcXVlIGluc3RhbGFyIHVtIHBhY290ZSBub3ZvLCBpc3NvIGdhcmFudGlyw6EgcXVlIGEgdmVyc8OjbyBkZXN0ZSBwYWNvdGUgZXN0YXLDoSByZWdpc3RyYWRhIG5vcyBhcnF1aXZvcyBlc3BlY2lhaXMgY3JpYWRvcyBwZWxvIHtgcmVudmB9Cgo0LiBgcmVudjo6cmVzdG9yZSgpYCBlc3RhIGZ1bsOnw6NvIMOpIHV0aWxpemFkYSBxdWFuZG8gdm9jw6ogcXVpc2VyIHJlcHJvZHV6aXIgYWxndW0gcHJvamV0by4gUG9yIGV4ZW1wbG8sIGFvIGJhaXhhciB1bSBwcm9qZXRvIGRvIEdpdEh1YiBhYnJhIGEgaW1hZ2VtIGRvIFJwcm9qZWN0IGUgdXRpbGl6ZSBhIGZ1bsOnw6NvIGByZXN0b3JlKClgIGlzc28gaXLDoSBkZXNlbmNhZGVhciBhIGluc3RhbGHDp8OjbyBkYXMgdmVyc8O1ZXMgZG9zIHBhY290ZXMgdXRpbGl6YWRhcyBubyBwcm9qZXRvIGVtIHNldSBjb21wdXRhZG9yLCBnYXJhbnRpbmRvIGFzc2ltIGEgcmVwcm9kdXRpYmlsaWRhZGUKCgojIEdhcmFudGluZG8gYSByZXByb2R1dGliaWxpZGFkZSBkYXMgZnVuw6fDtWVzOiB7YGdyb3VuZGhvZ2B9CgpPdXRyYSBvcMOnw6NvIMOpIG8gw7N0aW1vIHBhY290ZSB7YGdyb3VuZGhvZ2B9LCBxdWUgZXhlcmNlIGZ1bsOnw7VlcyBzaW1pbGFyZXMgYW8gYHJlbnZgIG1hcywgdGVjbmljYW1lbnRlLCBkZSBtYW5laXJhcyBkaXN0aW50YXMuIE8gb2JqZXRpdm8gZmluYWwgw6kgbyBtZXNtbywgYXVtZW50YXIgYSBjaGFuY2UgZGUgcmVwcm9kdXRpYmlsaWRhZGUgZGUgY8OzZGlnb3MgZW0gUiBhbyByZXNvbHZlciBhIGNvbXBhdGliaWxpZGFkZSBkZSB2ZXJzw7VlcyBkZSBwYWNvdGVzIGVzdGF0w61zdGljb3MgdXRpbGl6YWRvcyBuZXN0ZXMgc2NyaXB0cy4KCkEgZ3JhbmRlIGRpZmVyZW7Dp2EgZW50cmUgbyBwYWNvdGUge2ByZW52YH0gZSBvIHtgZ3JvdW5kaG9nYH0gw6kgbyBmYXRvIGRlIHF1ZSBvIHNlZ3VuZG8gZnVuY2lvbmEgaXNvbGFkYW1lbnRlIGVtIHNjcmlwdHMsIGVucXVhbnRvIG8gcHJpbWVpciwgbmVjZXNzYXJpYW1lbnRlLCBmYXogdXNvIGRvcyBwcm9qZXRvcyBubyBSLgoKIyMge2Bncm91bmRob2dgfSBuYSBwcsOhdGljYQoKUGFyYSB1dGlsaXphciBvIHtgZ3JvdW5kaG9nYH0gZGV2ZW1vcyBjaGFtYXIgYXMgZGVwZW5kw6puY2lhcyAocGFjb3RlcykgdXRpbGl6YW5kbyB1bWEgZnVuw6fDo28gZG8gZ3JvdW5kaG9nIGRhIHNlZ3VpbnRlIG1hbmVpcmEKCmBgYHtyIGVjaG89VFJVRSwgZXZhbD1GQUxTRX0KbGlicmFyeShncm91bmRob2cpCmdyb3VuZGhvZy5kYXk9IjIwMjAtMTEtMDEiCnBrZ3M9YygncHdyJywnbWV0YWZvcicsJ2RhdGEudGFibGVzJykKZ3JvdW5kaG9nLmxpYnJhcnkocGtncywgZ3JvdW5kaG9nLmRheSkKYGBgCgpPdSBzZWphLCB1dGlsaXphbW9zIGRvaXMgYXJndW1lbnRvcyBuYSBmdW7Dp8OjbyBgZ3JvdW5kaG9nLmxpYnJhcnlgIHVtIGluZGljYW5kbyBvcyBwYWNvdGVzIHF1ZSBkZXZlbSBzZXIgY2FycmVnYWRvcyBlIHVtIHNlZ3VuZG8sIGHDrSBhIGdyYW5kZSBkaWZlcmVuw6dhIGRvIGdyb3VuZGhvZywgaW5kaWNhbmRvIHVtYSBkYXRhIGRlIHVzbyBkbyBwYWNvdGUuIEVzdGEgZGF0YSBmdW5jaW9uYXLDoSBwYXJhIGJhaXhhciBhIHZlcnPDo28gZG8gcGFjb3RlIG1haXMgcmVjZW50ZSB0ZW5kbyBjb21vIHJlZmVyw6puY2lhIGEgZGF0YSBpbmRpY2FkYS4KCiMgRXhlcmPDrWNpbwoKVGVudGUgYXMgZHVhcyBmb3JtYXMgZGUgbGVyIHBhY290ZXMgYXByZXNlbnRhZGFzIG5lc3RhIHNlw6fDo28sIHZlamEgbyBxdWUgbXVkb3UgKG91IG7Do28pIG5vIHNldSBkaXJldMOzcmlvLgoKIyBMZWl0dXJhcyBhZGljaW9uYWlzCgpQYXJhIG1haXMgaW5mb3JtYcOnw7VlcyBzb2JyZSBvIHBhY290ZSB7YHJlbnZgfSB2ZWphIGVzdGUgW21hdGVyaWFsXShodHRwczovL3JlcHJvZHVjaWJpbGl0eS5yb2Nrcy9tYXRlcmlhbHMvZGF5My8wMS1yZW52LykuIFBhcmEgbWFpcyBpbmZvcm1hw6fDtWVzIHNvYnJlIG8ge2Bncm91bmRob2dgfSB2ZWphIG8gW2Jsb2ddKGh0dHBzOi8vZGF0YWNvbGFkYS5vcmcvOTUjZm9vdG5vdGVfMl81ODUyKSBlc2NyaXRvIHBvciB1bSBkb3MgZGVzZW52b2x2ZWRvcmVzIGRvIHBhY290ZS4gQSBwcm9ww7NzaXRvLCBvIGJsb2cgW0RhdGEgQ29sYWRhXShodHRwczovL2RhdGFjb2xhZGEub3JnLykgw6kgdW1hIGZvbnRlIHNlbnNhY2lvbmFsIGRlIGlkZWlhcyBlIGRpc2N1c3PDtWVzIHNvYnJlIGNpw6puY2lhLCByZXByb2R1dGliaWxpZGFkZSBlIHR1ZG8gbyBtYWlzLgo=