要向量化的循环:
n = 1000000
x = numeric(n)
for (I in 1:n) x[i] = rpois(1, 3) + rpois(1, 5)
原始版本太慢了,我对for循环或apply系列函数还没有太多的经验,所以我认为我只需要看一个示例即可知道如何实现。谢谢
答案 0 :(得分:4)
尝试
x = rpois(n, 3) + rpois(n, 5)
rpois(n,3)
已经创建了许多平局,因此无需循环。
要查看此内容,请注意以下几点:
set.seed(42)
n <- 10
x = numeric(n)
for (i in 1:n){
x[i] <- rpois(1, 3)
}
set.seed(42)
y <- rpois(n, 3)
all.equal(x,y)
[1] TRUE
请注意,由于随机数生成器中的增量会有所不同,所以相加的结果会略有不同,但这只是次要的细节。关键是不需要循环。