Как лесно да превключвате между различни renv библиотеки в рамките на един и същи проект.
Какво ще научим днес
За да настроите множество
renv.lock
файлове в рамките на един и същи проект.
Искаме решение с малко усилия, което безпроблемно ни позволява да:
- Превключвайте между различни
renv.lock
файлове в зависимост от някои променливи на средата - Не се налага да преинсталираме цялата
renv.lock
библиотека всеки път, когато сменяме проекта.
Rev
renv
е основен пакет за всеки, който работи с R. Той позволява да се създаде изолирана библиотека от пакети, която е достъпна само за вашия проект. Това е жизненоважно за осигуряване на възпроизводимост и за улесняване на сътрудничеството.
renv
ще запише пакетите, от които се нуждаете, и техните версии във файл, наречен renv.lock
. Предизвикателството, което преодоляваме днес, е, че renv
официално поддържа само един renv.lock за всеки проект. Това не е лошо решение, но има сценарии, при които може да се наложи да превключвате между няколко renv.lock
. Например:
- Работите на множество системи (Windows, MacOs, Linux).
- Трябва да се уверите, че вашата работа е съвместима с различни версии на R.
- Искате да имате внедрявания в различни целеви среди от една и съща кодова база.
renv
разработчиците твърдят, че потребителите са отговорни за справянето с тези сценарии, а не renv
. Въпреки че съм съгласен с принципа тук, все пак исках да намеря начин да направя това лесно, без дублиране на кодови бази, създаване на множество разклонения или нещо подобно.
renv стартиране
Когато стартирате R сесия в рамките на renv
проект, R първо ще извлече .Rprofile
файла. .Rprofile
след това източници renv/activate.R
. Това е много дълъг файл, който прави няколко неща. В крайно обобщение:
- Той проверява дали
renv
е инсталиран. - Той проверява
renv.lock
. - Той изпълнява
renv::status()
.
Ако разгледаме renv/activate.R
и изходния код renv
, разбираме, че пътищата се обработват с Sys.getenv()
.
Например функцията renv:::renv_paths_lockfile
проверява за глобалната променлива...