【发布时间】:2021-08-24 01:25:34
【问题描述】:
iter <- 1000
myvec <- c()
while(is.null(myvec) || nrow(myvec) <= iter){
x = rnorm(10, mean = 0, sd = 1)
if(sum(x) > 2.5){
myvec <- rbind(myvec, x)
}
}
我想并行化上面的 while 循环,在那里我不断迭代,直到在 myvec 中总共有 iter = 1000 条目。我在这里查看了this 的帖子,但我认为那里的答案不适用于我的示例。
【问题讨论】:
-
应该是 sd = 1 而不是 sigma = 1(第 4 行)?
-
由于循环条件中的数据依赖性,这个循环很难在 R 中有效地并行化,但是您可以通过 (a) 不重复调用
rbind来提高现有代码的效率,这使得您的算法渐近地变慢,并且(b)生成更大的正态分布随机数矩阵并找到条件不再成立的第一行。然后剪掉剩下的行。
标签: r loops while-loop parallel-processing