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