是否可以将驻留在全局环境中的变量移动到单独的环境中以整理全局命名空间?我了解如何在单独的环境中创建变量 (with(env, ...)
) 但是在全局环境中创建后是否有一种有效的方法来移动它们。我想可以将它们复制到一个单独的环境中,然后将它们从全局环境中删除,但想知道是否有更有效的方式。
最佳答案
也许:
library(purrr)
a <- 111
b <- 'hello'
my_envir <- new.env()
names(.GlobalEnv) %>%
walk(~ assign(.x, get(.x), envir = my_envir))
eapply(my_envir, function(x) x)
#> $my_envir
#> <environment: 0x7fed59e56dc8>
#>
#> $a
#> [1] 111
#>
#> $b
#> [1] "hello"
或者
library(purrr)
a <- 111
b <- 'hello'
my_envir <- new.env()
eapply(.GlobalEnv, function(x) x) %>%
discard(is.environment) %>%
{walk2(., names(.), ~{
assign(.y, .x, envir = my_envir)
exec('rm', .y, envir = .GlobalEnv)}
)}
eapply(my_envir, function(x) x)
#> $a
#> [1] 111
#>
#> $b
#> [1] "hello"
由 reprex package 创建于 2021-12-31 (v2.0.1)
https://stackoverflow.com/questions/70545627/