Возвращать элементы списка как независимые объекты в глобальной среде
У меня есть список и хотел бы разбить элементы списка на отдельные объекты в глобальной среде.
Например, мне нужен список:
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
.
Как я могу достичь своей цели?
Ответы
Ответ 1
Существует специальная функция для отображения списка в среду:
> 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"
Р. S. Это мой комментарий, представленный как ответ
Ответ 2
Это также сработает:
lapply(seq_along(obj), function(i) assign(names(obj)[i], obj[[i]], envir = .GlobalEnv))
Ответ 3
Я не рекомендую, но вы можете использовать attach
> obj <- list(a=1:5, b=2:10, c=-5:5)
> attach(obj)
> a
[1] 1 2 3 4 5
> b
[1] 2 3 4 5 6 7 8 9 10
> c
[1] -5 -4 -3 -2 -1 0 1 2 3 4 5