2013-05-08 32 views
2

我是这个论坛和R的新手,如果我的问题不清楚,或者我没有按照本论坛的“不成文的规则”进行操作,那么我很抱歉。复制R中数组中列表的元素

我正在R中进行一个模拟研究,用for循环运行一个函数几次。我想将函数的结果写在列表中,每次for循环运行函数。这些列表我想在一个数组中与dim(x,x,模拟的数量)相结合。 我不确定这是否是正确的方法,基本上我正在寻找一种方法来存储我的X(模拟的数量) - 以便捷的方式在一个变量中列出结果列表(因此我可以将此变量用作VAR [我] < - 功能..在我的循环)。

我希望这很清楚我的意思。我认为我的示例代码更清晰地表明了我正在寻找的内容:

对于所有类型的提示/建议/答案都很重要!

#These are e.g. the variables I get as output from the function. 
a <- matrix(NA, 2,1) 
b <- matrix(NA,2,1) 
beta <- matrix(NA,2,1) 
bp <- array(NA,c(2,2,2)) 

#I save these variables in a list (this is done already in the function self) 
results <- list(a = a, b = b, beta = beta, bp = bp) 

#Now, I would like to create an array to save this list each time I run the 
#function in my for loop. I tried this, but did not succeed: 
results2 <- array(results, c(1,1,10)) 
results3 <- array(rep(results)) 
+0

欢迎来到SO。要回答您的第一个担忧,请查看http://stackoverflow.com/faq。 – 2013-05-08 18:00:56

回答

2

如果我正确理解你的问题,你可能只是想用另一个列表 来存储你的函数fun的所有输出(作为一个例子,我做依赖于函数参数x函数的返回值)

fun <- function(x){ 
    ##These are e.g. the variables I get as output from the function. 
    a <- matrix(x/2, 2,1) 
    b <- matrix(x/2,2,1) 
    beta <- matrix(x/2,2,1) 
    bp <- array(x/2,c(2,2,2)) 
    list(a = a, b = b, beta = beta, bp = bp) 
} 

那么你可以使用lapply这是一个包装了一个for循环,以获得与您的所有结果的列表(这里的函数被调用100次):

all.results <- lapply(1:100, fun) 

您现在可以访问每个函数调用all.results[[1]],结果all.results[[2]]

另外,如果你想使用for循环:

all.results <- list() 
for (i in 1:100){ 
    all.results[[i]] <- fun(i) 
} 

这是否帮助?

+0

感谢您的快速回答! 这确实是我想要的。然而,我需要使用foor循环,因为在同一个循环中,我必须对相同的数据执行其他操作。 – Inga 2013-05-08 18:59:04

+0

好吧,我只是编辑了答案! – user1981275 2013-05-08 19:01:45

+0

谢谢!这确实是我正在寻找的..而且我无法弄清楚我必须使用什么尺寸列表,尽管解决方案非常明显(与您一样,只是将列表空白...)有时最明显的是最难看到我猜.. 谢谢! – Inga 2013-05-11 18:45:16