【发布时间】:2016-08-07 15:51:39
【问题描述】:
我正在尝试尽可能多地减少函数的执行时间,该函数对一系列伯努利试验的输出求和。
这是我的工作但缓慢的方法:
set.seed(28100)
sim <- data.frame(result = rep(NA, 10))
for (i in 1:nrow(sim)) {
sim$result[i] <- sum(rbinom(1200, size = 1, prob = 0.2))
}
sim
# result
# 1 268
# 2 230
# 3 223
# 4 242
# 5 224
# 6 218
# 7 237
# 8 254
# 9 227
# 10 247
如果没有 for 循环,我怎样才能获得相同的结果?
我试过了……
set.seed(28100)
sim <- data.frame(result = rep(sum(rbinom(1200, size = 1, prob = 0.2)), 10))
sim
# result
# 1 269
# 2 269
# 3 269
# 4 269
# 5 269
# 6 269
# 7 269
# 8 269
# 9 269
# 10 269
但显然rep() 的参数只执行一次。
【问题讨论】:
-
我会把你的答案指向我的解释,但单线解决方案是
rbinom(10, size = 1200, prob = 0.2)。
标签: r performance loops random