Р: поиск среды

Я немного смущен механизмом поиска R. Когда у меня есть следующий код

# create chain of empty environments
e1 <- new.env()
e2 <- new.env(parent=e1)
e3 <- new.env(parent=e2)

# set key/value pairs
e1[["x"]] <- 1
e2[["x"]] <- 2

тогда я ожидал бы получить "2", Если я ищу" x " в среде e3. Это работает, если я делаю

> get(x="x", envir=e3)
[1] 2

но если я использую

> e3[["x"]]
NULL

может кто-нибудь объяснить разницу? Похоже, что

e3[["x"]]

- это не просто синтаксический сахар для

get(x="x", envir=e3)


Заранее спасибо,
Свен!--6-->

1 ответов


эти функции разные.

get выполняет поиск объекта в среде, а также заключительные кадры (по умолчанию):

С ?get:

эта функция проверяет, имеет ли имя x значение, привязанное к нему в указанной среде. Если inherits имеет значение TRUE и значение x не найдено в указанной среде, то поиск заключающих фреймов среды выполняется до тех пор, пока не будет найдено имя X. Видеть окружающая среда и руководство "определение языка R" для получения подробной информации о структуре сред и их приложениях.

В противоположность не выполняет поиск в окружающих средах.

С ?'[':

оба $ и [[ могут быть применены к средам. Допускаются только символьные индексы и частичное сопоставление не выполняется. Семантика этих операций-это семантика get(i, env=x, inherits=FALSE).