首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在全局环境中以独立对象的形式返回list的元素

在全局环境中以独立对象的形式返回list的元素
EN

Stack Overflow用户
提问于 2012-12-10 13:31:29
回答 4查看 7.4K关注 0票数 43

我有一个列表,并希望在全局环境中将列表中的元素分解为独立的对象。

例如,我想要这个列表:

代码语言:javascript
复制
obj <- list(a=1:5, b=2:10, c=-5:5)

作为三个独立的对象abc

我试图通过以下方式实现这一点:

代码语言:javascript
复制
lapply(obj, FUN = function(x) names(x)[1] <<- x[1])

但它失败了,使用Error in names(x)[1] <<- x[1] : object 'x' not found

我怎样才能达到我的目标呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-10 17:17:22

列表到环境的映射有一个特殊的函数:

代码语言:javascript
复制
> obj <- list(a=1:5, b=2:10, c=-5:5)
> ls()
[1] "obj"
> list2env(obj,globalenv())
<environment: R_GlobalEnv>
> ls()
[1] "a"   "b"   "c"   "obj"

附言:这是我作为答案提供的评论。

票数 58
EN

Stack Overflow用户

发布于 2012-12-10 13:45:08

这也是可行的:

代码语言:javascript
复制
lapply(seq_along(obj), function(i) assign(names(obj)[i], obj[[i]], envir = .GlobalEnv))
票数 9
EN

Stack Overflow用户

发布于 2021-07-22 17:53:55

如果列表还不是命名列表,我们需要首先设置名称,例如,使用递增的字母。

代码语言:javascript
复制
obj2 <- list(1:5, 2:10, -5:5)

list2env(setNames(obj2, letters[seq(obj2)]), envir=.GlobalEnv)
ls()
# [1] "a"    "b"    "c"    "obj2"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13795526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档