#r #renv #r-environment
#r #renv #r-среда
Вопрос:
Я следую этим шагам, как в этом рабочем процессе здесь:
renv::init()
- работаем как обычно и устанавливаем новые пакеты
renv::snapshot()
Проблема, с которой я сталкиваюсь, заключается в том, что во время выполнения library(renv)
многие функции маскируются, например load, поэтому мне приходится повторно маскировать их по всему моему коду, чтобы заставить его снова работать. Например base::load(...)
, есть ли способ избежать этой маскировки?
Здесь журналы во время выполнения library(renv)
:
>
> Attaching package: ‘renv’
>
> The following object is masked from ‘package:stats’:
>
> update
>
> The following objects are masked from ‘package:utils’:
>
> history, upgrade
>
> The following objects are masked from ‘package:base’:
>
> load, remove
Ответ №1:
renv
разработан с расчетом на то, что пользователи обычно всегда будут использовать renv::
префикс при обращении к его функциям; например
renv::install()
По этой причине вы обычно не должны загружаться renv
через library()
, а вместо этого должны использовать его через этот префикс (если вы не хотите управлять конфликтами на пути поиска).
Если вы все еще хотите загружаться renv
как обычный пакет R, я бы рекомендовал использовать:
library(renv, include.only = <...>)
чтобы убедиться, что в пути поиска размещены только те функции, которые вам нужны.
Ответ №2:
Насколько я понимаю, этот exclude
аргумент может решить вашу проблему. Нравится:
library(renv, exclude = c("load", "update"))
Более безопасным будет использовать методы непосредственно для таких конфликтов с помощью ::.