r - 是否可以将变量从全局环境移动到单独的环境中?

是否可以将驻留在全局环境中的变量移动到单独的环境中以整理全局命名空间?我了解如何在单独的环境中创建变量 (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/

相关文章:

julia - 如何在 Julia 中绘制复数?

r - 从向量中提取字符元素

python - 如何解析 (1045, "Access denied for user ' Use

python - 绕过欧盟同意请求

python - Julia 重新编码未定义

javascript - 3 条件 - 三元条件链 JavaScript react

android - Appium 创建 session 失败

c++ - 即使在手动设置显示环境变量后,WSL Ubuntu 仍显示 "Error: Unable

rust - 错误处理、map_err 和错误类型转换

haskell - haskell 中有包含字符串和列表的类型吗?