R:肢解列表/引用当前环境



我正在尝试编写一个函数,该函数可以在函数的执行环境中使用,该函数是要列出的反向操作,即给定一个命名列表,它将命名元素作为命名对象返回。这是我所拥有的:

library(tidyverse)
unfold <- function(X){list2env(X, envir = rlang::current_env())}
l. <- list(A = 1, B = 2)
tst_unlist <- function(X){
  unfold(X)
  out <- as.list(rlang::current_env())
  out
}
tst_unlist(X = l.)

这将返回:

$X
$X$A
[1] 1
$X$B
[1] 2

换句话说,环境中只有 X,包含列表l. .

期望输出:

$X
$X$A
[1] 1
$X$B
[1] 2

$A
[1] 1
$B
[1] 2

换句话说,I 希望展开函数将分配的列表l.元素分配到tst_unlist的当前(执行(环境中。

您不想要当前环境,您的unfold函数应该使用调用环境,以便在tst_unlist范围内创建变量。所以只要做

unfold <- function(X){list2env(X, envir = rlang::caller_env())}

使用 current_env() 只会将这些对象放置在执行unfold函数的环境中。

相关内容

  • 没有找到相关文章

最新更新