我有一个手动创建的对象列表,如下所示:
rand1 <- rnorm(1e3)
rand2 <- rnorm(1e6)
myObjects <- NULL
myObjects[[1]] <-rand1
myObjects[[2]] <-rand2
names(myObjects) <- c("rand1","rand2")
我正在研究捆绑对象的一些代码并将它们放在S3中。然后我在EC2中有代码,我想获取myObjects列表并自动“解包”它。在这个例子中,列表只有两个对象,名称是已知的,但我如何编码它来处理任何长度和任何名称的列表?
#pseudo code
for each thing in myObjects
thing <- myObjects[[thing]]
我无法弄清楚如何取名(myObjects)[1]并将其转换为一个对象的名称,我将为其分配myObjects [[1]]的内容。我可以处理循环,但创建每个对象有点让我挂起。我确信这很简单,但我不能理解它。
答案 0 :(得分:11)
您可以使用assign
:
for(i in 1:length(myObjects)) assign(names(myObjects)[i], myObjects[[i]])
答案 1 :(得分:6)
attach(myObjects)
答案 2 :(得分:5)
扩展Shane的答案:
mapply(assign, names(myObjects), myObjects, MoreArgs=list(envir = globalenv())
(您可能希望将globalenv()
更改为其他环境。)