JD Long
JD Long

Reputation: 60756

R: turning list items into objects

I have a list of objects that I've created manually, like this:

rand1 <- rnorm(1e3)
rand2 <- rnorm(1e6)

myObjects <- NULL
myObjects[[1]] <-rand1
myObjects[[2]] <-rand2
names(myObjects) <- c("rand1","rand2")

I'm working on some code that bundles up objects and puts them up in S3. Then I have code in EC2 that I want to grab the myObjects list and 'unbundle' it automatically. In this example the list only has two objects and the names are known, but how do I code this to handle lists of any length and any names?

#pseudo code
for each thing in myObjects
  thing <- myObjects[[thing]]

I can't quite figure out how to take names(myObjects)[1] and turn it into the name of an object for which I will assign the contents of myObjects[[1]]. I can handle the looping but creating each object kinda has me hung. I'm sure this is quite simple, but I can't quite grok it.

Upvotes: 6

Views: 6954

Answers (3)

Richie Cotton
Richie Cotton

Reputation: 121067

To expand Shane's answer:

mapply(assign, names(myObjects), myObjects, MoreArgs=list(envir = globalenv())

(You may wish to change globalenv() to another environment.)

Upvotes: 6

hadley
hadley

Reputation: 103898

attach(myObjects)

Upvotes: 9

Shane
Shane

Reputation: 100164

You can use assign:

for(i in 1:length(myObjects)) assign(names(myObjects)[i], myObjects[[i]])

Upvotes: 12

Related Questions