Хотя я согласен с общим советом Харлана (то есть не использую что-либо, пока вы не понимаете это), я бы добавил:
Среды - это фундаментальная концепция в R, и, на мой взгляд, они чрезвычайно полезны (другими словами: их стоит понять!). Среды очень важны для понимания вопросов, связанных с областью применения. Некоторые основные вещи, которые вы должны понимать в этом контексте:
search()
: покажет вам рабочее пространство; среды перечислены в порядке приоритета. Основным окружением является .GlobalEnv, и на него всегда можно ссылаться как таковое.
ls()
: покажет вам, что содержится в окружающей среде
attach
/ detach
: создает новую среду для объекта
get
, assign
, <<-
и <-
: вы должны знать разницу между этими функциями
with
: один метод работы со средой без ее подключения.
Еще один указатель: взгляните на пакет proto (используется в ggplot), который использует среды для обеспечения управляемого наследования.
Наконец, я хотел бы отметить, что среды очень похожи на списки: они могут хранить внутри себя любые объекты (см. этот вопрос ). Но в зависимости от вашего варианта использования (например, хотите ли вы иметь дело с наследованием и приоритетом), с списком может быть проще работать. И вы всегда можете attach
список как окружение.
Редактировать: Если вы хотите увидеть пример proto
в работе в ggplot
, посмотрите, что структура объекта ggplot, который по сути является списком, составленным частично из окружений:
> p <- qplot(1:10, 1:10)
> str(p)
List of 8
$ data :'data.frame': 0 obs. of 0 variables
$ layers :List of 1
..$ :proto object
.. .. $ legend : logi NA
.. .. $ inherit.aes: logi TRUE
...
> class(p$layers[[1]])
[1] "proto" "environment"
> is.environment(p$layers[[1]])
[1] TRUE
Обратите внимание, как он построен с использованием прото и в результате содержит много сред. Вы также можете построить отношения в этих объектах, используя graph.proto
.