R: 肢解一个 list/referring 到当前环境
R: Dismembering a list/referring to the current environment
我正在尝试编写一个可以在函数的执行环境中使用的函数,该函数是列表的逆操作,即给定一个命名列表,它 returns 命名元素作为命名对象.这是我的:
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.)
这个returns:
$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
换句话说,我希望展开函数将分配的列表l.
的元素分配到tst_unlist的当前(执行)环境中。
您不需要当前环境,您的 unfold
函数应该使用调用环境以便在 tst_unlist
范围内创建变量。所以就做
unfold <- function(X){list2env(X, envir = rlang::caller_env())}
使用 current_env()
只会将这些对象放置在执行 unfold
函数的环境中。
我正在尝试编写一个可以在函数的执行环境中使用的函数,该函数是列表的逆操作,即给定一个命名列表,它 returns 命名元素作为命名对象.这是我的:
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.)
这个returns:
$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
换句话说,我希望展开函数将分配的列表l.
的元素分配到tst_unlist的当前(执行)环境中。
您不需要当前环境,您的 unfold
函数应该使用调用环境以便在 tst_unlist
范围内创建变量。所以就做
unfold <- function(X){list2env(X, envir = rlang::caller_env())}
使用 current_env()
只会将这些对象放置在执行 unfold
函数的环境中。