如何多次运行多元仿真并将每个结果保存到特定变量中?

时间:2019-08-30 19:05:56

标签: r

我试图运行100次多变量模拟,并希望将每次运行保存到一个新变量中并将其写入新的csv文件。我不知道如何循环通过。

我可以通过复制代码并手动命名变量来保存每次运行。这很繁琐,我相信有更好的方法来实现这一目标。

library(dmutate)
mu <- c(4.23, 3.01, 2.91)
stddev <- c(1.23, 0.92, 1.32)

corMat <- matrix(c(1, 0.78, 0.23,
                   0.78, 1, 0.27,
                   0.23, 0.27, 1),
                 ncol = 3)

covMat <- stddev %*% t(stddev) * corMat

sims1 <- rmvnorm(10000, mu = mu, covMat)

sims2 <- rmvnorm(10000, mu = mu, covMat)

sims3 <- rmvnorm(10000, mu = mu, covMat)
.
.
.
sims100 <- rmvnorm(10000, mu = mu, covMat)

write.csv(sims1, file =  "Sims_out1.csv", row.names = FALSE)
write.csv(sims2, file =  "Sims_out2.csv", row.names = FALSE)
write.csv(sims3, file =  "Sims_out3.csv", row.names = FALSE)

我想循环播放它们并将它们保存为不同的变量,然后将它们写入不同的csv文件中,而不必手动复制它们超过100次。

1 个答案:

答案 0 :(得分:1)

看看你的例子,我会这样做。

for (i in 1:100) {
  sims <- rmvnorm(10000, mu = mu, covMat)
  write.csv(sims1, file =  paste0("Sims_out",i,".csv"), row.names = FALSE)
}

基本上,您想进行循环仿真,然后将其写入新文件中。