R:将列表项转换为对象

时间:2010-06-22 14:29:00

标签: list r

我有一个手动创建的对象列表,如下所示:

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]]的内容。我可以处理循环,但创建每个对象有点让我挂起。我确信这很简单,但我不能理解它。

3 个答案:

答案 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()更改为其他环境。)