我有一个列表,并希望在全局环境中将列表中的元素分解为独立的对象。
例如,我想要这个列表:
obj <- list(a=1:5, b=2:10, c=-5:5)
作为三个独立的对象a
、b
和c
。
我试图通过以下方式实现这一点:
lapply(obj, FUN = function(x) names(x)[1] <<- x[1])
但它失败了,使用Error in names(x)[1] <<- x[1] : object 'x' not found
。
我怎样才能达到我的目标呢?
发布于 2012-12-10 17:17:22
列表到环境的映射有一个特殊的函数:
> 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"
附言:这是我作为答案提供的评论。
发布于 2012-12-10 13:45:08
这也是可行的:
lapply(seq_along(obj), function(i) assign(names(obj)[i], obj[[i]], envir = .GlobalEnv))
发布于 2021-07-22 17:53:55
如果列表还不是命名列表,我们需要首先设置名称,例如,使用递增的字母。
obj2 <- list(1:5, 2:10, -5:5)
list2env(setNames(obj2, letters[seq(obj2)]), envir=.GlobalEnv)
ls()
# [1] "a" "b" "c" "obj2"
https://stackoverflow.com/questions/13795526
复制相似问题