Как лесно да превключвате между различни 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 проверява за глобалната променлива...