2

我是这个论坛和 R 的新手,所以如果我的问题不清楚或者我不遵守这个论坛的“不成文规则”,请先道歉。

我正在 R 中使用一个多次运行函数的 for 循环进行模拟研究。我想将函数的结果写在一个列表中,每次 for 循环运行该函数时。我想将这些列表与 dim(x,x,Number of simulations) 组合成一个数组。我不确定这是否是正确的方法,基本上我正在寻找一种方法将我的 X(模拟次数)列表与结果以一种方便的方式存储在一个变量中(所以我可以将此变量用作 VAR[ i] <- function.. 在我的 for 循环中)。

我希望我的意思很清楚。我认为我的示例代码更清楚地说明了我在寻找什么:

非常感谢各种提示/建议/答案!

#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))
4

1 回答 1

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)
}

然后,您可以使用lapplywhich 是 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)
}

这有帮助吗?

于 2013-05-08T16:48:00.193 回答