繁体   English   中英

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

[英]How to return elements of R list as independent objects in function environment?

与此问题类似:

将列表的元素作为全局环境中的独立对象返回

当在函数内部调用list2env时,我似乎无法调整答案来分配列表元素:

例如

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)在这里使用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将处于当前环境中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM