"attaching" 环境变量到现有环境

"attaching" environment variables to an existing environment

我正在做一个项目,它有两种可能的情况。在第一个场景中,我需要环境中的变量 abc。在第二种情况下,我需要变量 abdf.

我试图找出一种以某种方式“附加”这些环境的方法,这样我首先使用在两种情况下都很常见的变量创建一个 basis_environment - ab

basis_environment <- env(a = 4, b = 5)

并且根据场景(ex.scenario1)我创建了另一个变量,如:

final_environment <- env(basis_environment,
                          c = 7)

然而,这导致 final_ennvironment 只有一个元素,即 c.

如何创建一个包含所有三个变量的环境,以便两个在较早阶段创建,最后一个在稍后创建,但最终环境包含所有三个变量?

您可以在 base R 中使用类似以下内容实现此目的:

basis_environment <- list2env(list(a = 4, b = 5))

# The following ensures a copy of the environment is made, not just a reference
final_environment <- list2env(as.list(basis_environment))

# Add elements directly to final_environment using the $ operator
final_environment$c <- 7

而且我们可以看到这两个环境是不同的:

ls(envir = basis_environment)
#> [1] "a" "b"

ls(envir = final_environment)
#> [1] "a" "b" "c"

reprex package (v0.3.0)

于 2020-11-22 创建