我应该使用sapply来运行不需要参数的模拟吗?

问题描述 投票:0回答:1

我正在运行数千次不需要任何参数的模拟。这是一个非常简单的示例:

simulate <- function() sum(sample(1:10, size = 5))

我可以跑步

results <- rep(0,1000)
for(i in 1:1000){
  results[i] <- simulate()
}

...但是我已经读过很多遍了,R的for循环很慢,我需要最大化速度(我正在做的实际仿真比这要耗费更多的时间)。

  1. 我应该在apply上使用results家族的成员,如果是,如何使用?
  2. 如果sapply的元素不是,则results仍比for循环快在模拟功能中使用?
r performance simulation sapply processing-efficiency
1个回答
0
投票

您可以为此使用sapply,但通常在这种情况下,我更喜欢replicate

set.seed(123)
replicate(10, simulate())
#[1] 29 24 27 29 29 19 22 31 28 23

使用sapply的方式将是使用匿名函数。

sapply(1:10, function(X) simulate())
© www.soinside.com 2019 - 2024. All rights reserved.