如何在函数环境中将R列表的元素作为独立对象返回?

时间:2016-11-16 01:44:43

标签: r

与此问题类似:

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作为列表分配给函数环境,而不是单个变量ab

1 个答案:

答案 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)

现在ab将在当前环境中。