与此问题类似:
Return elements of list as independent objects in global environment
在函数内部调用list2env
时,似乎无法调整答案来分配列表元素:
E.g。
lst <- list(a = c(1, 2), b = c(3, 4))
tmp_fn <- function(lst) {
# do computations on list elements
# first assign each to the function environment
list2env(lst, parent = parent.frame()) # fails
# do stuff
...
}
我认为parent = parent.frame()
可行,但在调试tmp_fn
时,我只看到lst
作为列表分配给函数环境,而不是单个变量a
和b
。
答案 0 :(得分:2)
1)在此使用envir=
而不是parent=
。另外,如图所示,您可能希望添加envir
作为灵活性的参数:
lst <- list(a = c(1, 2), b = c(3, 4))
tmp_fn <- function(lst, envir = parent.frame()) {
invisible(list2env(lst, envir = envir))
}
tmp_fn(lst)
2)另一种可能性是使用gsubfn包中的list[...]<-
(开发版):
devtools::install_github("ggrothendieck/gsubfn")
library(gsubfn)
func <- function(lst) lst
list[a, b] <- func(lst)
现在a
和b
将在当前环境中。