Если список изменяется, то создается новый список (и объект, который создается в функции, является локальным для этой функции и удаляется при выходе из функции).Обратите внимание на приведенные ниже вычисления с использованием L1
и того, что адрес L1
изменился после его изменения.
С другой стороны, среда имеет идентичность, отличную от ее содержимого.Изменение содержимого среды не меняет идентичность среды.Обратите внимание, что после того, как мы изменили содержимое окружения e1
, его адрес не изменился.
library(pryr)
L1 <- list(a = 1)
address(L1)
## [1] "0xdb8aeb0"
L1$b <- 2
address(L1)
## [1] "0x841eca8"
e1 <- list2env(L1)
address(e1)
## [1] "0xbdf2420"
e1$c <- 3
address(e1)
## [1] "0xbdf2420"